diff --git a/devTools/types/FC/arcology.d.ts b/devTools/types/FC/arcology.d.ts
index f692aa0c814c0b4efcb5b7787ffb217bab6e1908..f664bd929405a38c09b5d21988ab55f57dbe0245 100644
--- a/devTools/types/FC/arcology.d.ts
+++ b/devTools/types/FC/arcology.d.ts
@@ -113,7 +113,7 @@ declare namespace FC {
 			research: undefined, SMR: true, policy: "Law", choice: undefined
 		};
 		FSAntebellumRevivalist: {
-			noun: "Antebellum Revivalism", adj:"Antebellum Revivalist", deco: "Antebellum Revivalist",
+			noun: "Antebellum Revivalism", adj: "Antebellum Revivalist", deco: "Antebellum Revivalist",
 			research: undefined, SMR: true, policy: "Law1" | "Law2", choice: undefined
 		};
 		FSRepopulationFocus: {
diff --git a/js/003-data/policiesData.js b/js/003-data/policiesData.js
index ab5cc3e15c8285c11fc18e70597eb62731bbaec0..648a8e83d92d31b02061e652676dca7543987b97 100644
--- a/js/003-data/policiesData.js
+++ b/js/003-data/policiesData.js
@@ -2060,13 +2060,16 @@ App.Data.Policies.Selection = {
 			{
 				title: "Guarantee the Right to Bear Arms",
 				titleClass: "lime",
-				text: `it is an expected right under the ideals established by Antebellum Revivalism that eligible citizens ought to be able to possess weaponry and form militias to defend themselves and their property. 
-					${V.secExpEnabled && V.SecExp.edicts.weaponsLaw === 0 ? 
-						` By your edict, citizens are currently forbidden from possessing firearms. Enacting this law will automatically set the range of weapons allowed within the arcology to non-automatic, non-high caliber, free of the usual cost of authority.` : ``
-					}`,
+				get text() {
+					let text = `it is an expected right under the ideals established by Antebellum Revivalism that eligible citizens ought to be able to possess weaponry and form militias to defend themselves and their property.`;
+					if (V.secExpEnabled && V.SecExp.edicts.weaponsLaw === 0) {
+						text += ` By your edict, citizens are currently forbidden from possessing firearms. Enacting this law will automatically set the range of weapons allowed within the arcology to non-automatic, non-high caliber, free of the usual cost of authority.`;
+					}
+					return text;
+				},
 				activatedText: "citizens proudly carry arms in defense of themselves and the arcology against foreign threats and the slave class.",
 				get requirements() { return (V.arcologies[0].FSAntebellumRevivalist >= 90); },
-				onImplementation: function() { 
+				onImplementation: function() {
 					if (V.secExpEnabled && V.SecExp.edicts.weaponsLaw === 0) {
 						V.SecExp.edicts.weaponsLaw = 1;
 					}
diff --git a/src/art/webgl/art.js b/src/art/webgl/art.js
index d3d801ba068f1c2592eca21eb7a5d5e401d72b27..801bb900bd8bef0853ebb617dbe6e1803767df56 100644
--- a/src/art/webgl/art.js
+++ b/src/art/webgl/art.js
@@ -1299,7 +1299,7 @@ App.Art.applySurfaces = function(slave, scene, p) {
 	}
 
 	let pubicStyle = "";
-	if (slave.physicalAge >= slave.pubertyAge) {
+	if (slave.physicalAge >= Math.min(slave.pubertyAgeXX, slave.pubertyAgeXY)) {
 		switch (slave.pubicHStyle) {
 			case "hairless":
 			case "waxed":
@@ -2179,7 +2179,7 @@ App.Art.applyMaterials = function(slave, scene, p) {
 	materials.push(["TemplateGenitalia", "Ni", Ni]);
 	materials.push(["TemplateGenitalia", "map_Ka", "base/skin/" + skin + "Torso.jpg"]);
 
-	if (slave.physicalAge >= slave.pubertyAge) {
+	if (slave.physicalAge >= Math.min(slave.pubertyAgeXX, slave.pubertyAgeXY)) {
 		const pubicColor = App.Art.hexToRgb(extractColor(slave.pubicHColor));
 		switch (slave.pubicHStyle) {
 			case "hairless":
diff --git a/src/endWeek/economics/neighborsDevelopment.js b/src/endWeek/economics/neighborsDevelopment.js
index 17a76c44d0c96b5b86bd7078507afcb6bee5e44c..db7805b1a4dfbed438e5de79f9fd3a235e6b8894 100644
--- a/src/endWeek/economics/neighborsDevelopment.js
+++ b/src/endWeek/economics/neighborsDevelopment.js
@@ -2052,7 +2052,7 @@ App.EndWeek.neighborsDevelopment = function() {
 				} else if (leader.nationality === "Mexican") {
 					candidates.push({fs: "FSAztecRevivalist", msg: `since ${he}'s Mexican ${himself} and can claim high honor in such a society.`});
 				} else if (leader.nationality === "American") {
-					candidates.push({fs: "FSAntebellumRevivalist", msg: `since ${he}'s American ${himself} and can claim high honor in such a society.`});				
+					candidates.push({fs: "FSAntebellumRevivalist", msg: `since ${he}'s American ${himself} and can claim high honor in such a society.`});
 				} else if (leader.nationality === "Egyptian") {
 					candidates.push({fs: "FSEgyptianRevivalist", msg: `since ${he}'s Egyptian ${himself} and wants to relive the glory of the Pharaohs.`});
 				} else if (["German", "French", "Spanish", "English"].includes(leader.nationality)) {
@@ -2288,7 +2288,7 @@ App.EndWeek.neighborsDevelopment = function() {
 				["FSPetiteAdmiration", [
 					{
 						fs: "FSAssetExpansionist",
-						msg: `The arcology's Petite Admiration culture <span class="yellow">pushes it towards Asset Expansionist,</span> since a ${girlU} with tits wider than ${heU} is tall attracts quite some attention.`
+						msg: `The arcology's Petite Admiration culture <span class="yellow">pushes it towards Asset Expansionism,</span> since a ${girlU} with tits wider than ${heU} is tall attracts quite some attention.`
 					},
 					{
 						fs: "FSPaternalist",
diff --git a/src/endWeek/saRecruitGirls.js b/src/endWeek/saRecruitGirls.js
index 6c35a797471133a689b4b3a734ef9f68c4c82ee0..f3b80478d361d7830d0cee422c79f750ba5c712c 100644
--- a/src/endWeek/saRecruitGirls.js
+++ b/src/endWeek/saRecruitGirls.js
@@ -1664,7 +1664,7 @@ App.SlaveAssignment.recruitGirls = function recruitGirls(slave) {
 		} else if (arcology.FSAntebellumRevivalist !== "unset") {
 			if (slave.skill.entertainer > 95 && App.Entity.facilities.servantsQuarters.employeesIDs().size > 5 && (slave.behavioralQuirk === "funny" || totalInt > 50)) {
 				pushFS(`${He} puts together a charming little video touring your spotless estate, showing particular care to the well-staffed ${V.servantsQuartersName}.`);
-				if (V.servantsQuartersDecoration === "Arabian Revivalist") {
+				if (V.servantsQuartersDecoration === "Antebellum Revivalist") {
 					pushFS(`The decor really impresses the viewers.`);
 					seed += 1;
 				}
@@ -1679,7 +1679,7 @@ App.SlaveAssignment.recruitGirls = function recruitGirls(slave) {
 			} else if (App.Entity.facilities.servantsQuarters.employeesIDs().size <= 1) {
 				pushFS(`${He} worries she might embarrass you if ${he} inadvertently let slip how few servants you have.`);
 			} else {
-				pushFS(`${He} can't seem create anything entertaining enough that really sells the idea of your household.`)
+				pushFS(`${He} can't seem create anything entertaining enough that really sells the idea of your household.`);
 			}
 		}
 
diff --git a/src/endWeek/saSocialEffects.js b/src/endWeek/saSocialEffects.js
index 5ff952257ef475f6e9ba96ac78013ea2036059e6..545447a98257ce4b5a3330029ca9c345d0e45962 100644
--- a/src/endWeek/saSocialEffects.js
+++ b/src/endWeek/saSocialEffects.js
@@ -736,7 +736,7 @@ App.SlaveAssignment.saSocialEffects = function(slave) {
 		}
 
 		if (V.arcologies[0].FSAntebellumRevivalist !== "unset") {
-			if (slave.assignment == Job.QUARTER) {
+			if (slave.assignment === Job.QUARTER) {
 				if (V.arcologies[0].FSSubjugationist !== "unset" && slave.race === V.arcologies[0].FSSubjugationistRace) {
 					t.push(new SocialEffect("Antebellum Revivalist", 2, `Servants`,
 						`Society <span class="green">strongly approves</span> of ${slave.slaveName}, a slave of the inferior race, working as a servant.`));
@@ -748,7 +748,7 @@ App.SlaveAssignment.saSocialEffects = function(slave) {
 
 			if (slave.skill.entertainment > 60 && slave.devotion > 20) {
 				t.push(new SocialEffect("Antebellum Revivalist", 1, `Entertaining`,
-					`Society <span class="green">approves</span> of owning an obedient and affable slaves like ${slave.slaveName}.`));
+					`Society <span class="green">approves</span> of owning an obedient and affable slave like ${slave.slaveName}.`));
 			}
 		}
 
diff --git a/src/events/recFS/recfsAntebellumRevivalist.js b/src/events/recFS/recfsAntebellumRevivalist.js
index 86d66b936bbd7947a545ff04eaec9e5e8c91ca96..115ca33bb55a63a79ffc50958bd100db6f928dcf 100644
--- a/src/events/recFS/recfsAntebellumRevivalist.js
+++ b/src/events/recFS/recfsAntebellumRevivalist.js
@@ -9,7 +9,7 @@ App.Events.recFSAntebellumRevivalist = class recFSAntebellumRevivalist extends A
 	execute(node) {
 		let r = [];
 
-		let slaveRace = ""
+		let slaveRace = "";
 		if (V.arcologies[0].FSSubjugationistRace !== 0) {
 			slaveRace = V.arcologies[0].FSSubjugationistRace;
 		} else if (V.arcologies[0].FSSupremacist !== 0) {
diff --git a/src/events/scheduled/pitFight.js b/src/events/scheduled/pitFight.js
index 56e29514dce1d7e9fb274f63acfb864a3a7ff995..094400a736b208ab481d513cc327dc72b86cf7e6 100644
--- a/src/events/scheduled/pitFight.js
+++ b/src/events/scheduled/pitFight.js
@@ -313,7 +313,7 @@ App.Events.SEPitFight = class SEPitFight extends App.Events.BaseEvent {
 			const averageSuccess = totalSuccess / maxFights;
 			r.push(eventSuccess(averageSuccess));
 
-			r.push("At the and of the day you");
+			r.push("At the end of the day you");
 
 			const repGain = 100 * totalSuccess;
 			const cashGain = 2000 * totalSuccess;
diff --git a/src/interaction/sellSlave.js b/src/interaction/sellSlave.js
index 2bd1dda74674d23c0b6d7f63e9126c866453e32c..7efe816ccbdd984a145e42232ad5f8c5cd0ae5aa 100644
--- a/src/interaction/sellSlave.js
+++ b/src/interaction/sellSlave.js
@@ -2886,7 +2886,7 @@ App.Interact.sellSlave = function(slave) {
 						r.push(`With ${slave.slaveName} added to their stable of sex slaves, General ${V.peacekeepers.generalName}'s troops will be fully converted to the idea of aligning with the slaveowning Free Cities, and the general will no longer have to maintain even plausible deniability. <span class="yellow">General ${V.peacekeepers.generalName}'s little empire is now effectively a client state of ${V.arcologies[0].name}.</span>`);
 						V.peacekeepers.attitude = 100;
 					} else {
-						r.push(`General ${V.peacekeepers.generalName}'s little empire continues to be a reliable client state of ${V.arcologies[0].name}, and a good market for ${V.peacekeepers.tastes}.`);
+						r.push(`General ${V.peacekeepers.generalName}'s little empire continues to be a reliable client state of ${V.arcologies[0].name}${V.peacekeepers.tastes !== "" ? `, and a good market for ${V.peacekeepers.tastes}` : ``}.`);
 					}
 					return r;
 				},
diff --git a/src/js/SlaveState.js b/src/js/SlaveState.js
index 26b176d0ffd0914d71cabee59546dadb49d7a31b..262183b82c633fb05ec1c6fc02a4a2af163c213b 100644
--- a/src/js/SlaveState.js
+++ b/src/js/SlaveState.js
@@ -605,7 +605,9 @@ App.Entity.EyeState = class EyeState {
 App.Entity.GeneticState = class GeneticState {
 	constructor() {
 		// TODO: move origHColor, origSkin, origRace here, as hColor, skin, race?
-		this.height = 170; // new - almost done.  need to rewrite physical development for both player and slave.
+		/** adult, natural height; expected height when full-grown/no drugs/no surgery
+		 * @type {number} */
+		this.height = 170;
 		// this.boobs = 500; // TODO: for pregmodder
 		this.artSeed = jsRandom(0, 10 ** 14);
 	}
diff --git a/src/npc/generate/newChildIntro.js b/src/npc/generate/newChildIntro.js
index 3af74e4f817ad38f3cf75aa4cdb8f8e80d8cf9e3..99143b6cddefcd8f696b5402e38fa63748f4a56c 100644
--- a/src/npc/generate/newChildIntro.js
+++ b/src/npc/generate/newChildIntro.js
@@ -377,7 +377,7 @@ App.UI.newChildIntro = function(slave) {
 			App.UI.DOM.link(
 				`Give ${him} a random old Southern-style surname`,
 				() => {
-					slave.slaveSurname = App.Data.misc.antebellumRevivalistSlaveSurnames.random();
+					slave.slaveSurname = App.Data.misc.antebellumSlaveSurnames.random();
 					slave.birthSurname = slave.slaveSurname;
 					jQuery(surnaming).empty().append(`${V.assistant.name} registers the new ${girl}'s surname as "${slave.slaveSurname}" in your registry.`);
 					jQuery(newName).empty().append(SlaveFullName(slave));