diff --git a/devNotes/VersionChangeLog-Premod+LoliMod.txt b/devNotes/VersionChangeLog-Premod+LoliMod.txt
index ff89f7babf14b4afbabc34a8ec6091f45cc108bc..a143885119dd6148dd2a2c91f63c0e8bb3427ec2 100644
--- a/devNotes/VersionChangeLog-Premod+LoliMod.txt
+++ b/devNotes/VersionChangeLog-Premod+LoliMod.txt
@@ -6,6 +6,7 @@ Pregmod
 	-unified cybermod with vanilla
 	-slave assignment links improved
 	-facility transfer tab added to facility assignment
+	-added birth tracking tattoo
 	-breast implants now impact milk production based on % implant
 	-many new names added to lacking name pools
 	-fixes
diff --git a/src/js/generateMarketSlave.js b/src/js/generateMarketSlave.js
index 80c810fa5db973d028161b8285442fd5183e892a..16ae0160aab1b70f8eeb32bced8aea85dc10ec09 100644
--- a/src/js/generateMarketSlave.js
+++ b/src/js/generateMarketSlave.js
@@ -4,6 +4,8 @@ window.generateMarketSlave = function(market = "kidnappers", numArcology = 1) {
 	let sisterAge;
 	let minHeight;
 	let criminal;
+	let pronounsGenerated = false;
+	let pronoun;
 
 	switch (market) {
 		case "corporate":
@@ -75,7 +77,7 @@ window.generateMarketSlave = function(market = "kidnappers", numArcology = 1) {
 			} else if (V.corpSpecRaces.length === 1) {
 				r += `The corporation specializes in ${V.corpSpecRaces[0]} slaves. `;
 			} else {
-				r += `The corporation selects slaves based on race. `/*getting into the specifics of which races exactly is a hellhole I'd rather not jump into*/ ;
+				r += `The corporation selects slaves based on race. `; /*getting into the specifics of which races exactly is a hellhole I'd rather not jump into*/
 			}
 			if (V.corpSpecTrust > 0) {
 				V.activeSlave.trust = jsRandom(-105, -85) + V.corpSpecTrust * 20;
@@ -187,14 +189,20 @@ window.generateMarketSlave = function(market = "kidnappers", numArcology = 1) {
 				r += `The corporation uses subtle cosmetic surgery to improve its slaves for sale. `;
 				if ((V.activeSlave.anus > 3)) {
 					V.activeSlave.anus = 3;
-					if (V.activeSlave.skill.anal > 10) {V.activeSlave.skill.anal -= 10;}
+					if (V.activeSlave.skill.anal > 10) {
+						V.activeSlave.skill.anal -= 10;
+					}
 				}
 				if (V.activeSlave.vagina > 3) {
 					V.activeSlave.vagina = 3;
-					if (V.activeSlave.skill.vaginal > 10) {V.activeSlave.skill.vaginal -= 10;}
+					if (V.activeSlave.skill.vaginal > 10) {
+						V.activeSlave.skill.vaginal -= 10;
+					}
 				}
 				if (V.activeSlave.faceImplant <= 30 && V.activeSlave.face <= 95) {
-					if (V.activeSlave.faceShape === "masculine") {V.activeSlave.faceShape = "androgynous";}
+					if (V.activeSlave.faceShape === "masculine") {
+						V.activeSlave.faceShape = "androgynous";
+					}
 					V.activeSlave.faceImplant = 20;
 					V.activeSlave.face = Math.clamp(V.activeSlave.face+20, -100, 100);
 				}
@@ -211,28 +219,31 @@ window.generateMarketSlave = function(market = "kidnappers", numArcology = 1) {
 					V.activeSlave.boobShape = "normal";
 				}
 				if (((V.activeSlave.boobShape === "normal") || (V.activeSlave.boobShape === "wide-set"))) {
-					if (V.activeSlave.boobs > 800) {V.activeSlave.boobShape = "torpedo-shaped";}
-					else {V.activeSlave.boobShape = "perky";}
+					if (V.activeSlave.boobs > 800) {
+						V.activeSlave.boobShape = "torpedo-shaped";
+					} else {
+						V.activeSlave.boobShape = "perky";
+					}
 				}
 			} else {
 				r += `The corporation does not use cosmetic surgery to improve its slaves for sale. `;
 			}
 			if (V.corpSpecPussy === 1) {
 				r += `The corporation adds pussies where needed. `;
-				V.activeSlave.vagina = 0,
+				V.activeSlave.vagina = 0;
 				V.activeSlave.ovaries = 1;
 			} else if (V.corpSpecPussy === -1) {
 				r += `The corporation removes pussies where possible. `;
-				V.activeSlave.vagina = -1,
+				V.activeSlave.vagina = -1;
 				V.activeSlave.ovaries = 0;
 			}
 			if (V.corpSpecDick === 1) {
 				r += `The corporation adds dicks where needed. `;
-				V.activeSlave.dick = 2,
+				V.activeSlave.dick = 2;
 				V.activeSlave.prostate = 1;
 			} else if (V.corpSpecDick === -1) {
 				r += `The corporation removes dicks where possible. `;
-				V.activeSlave.dick = 0,
+				V.activeSlave.dick = 0;
 				V.activeSlave.prostate = 0;
 			}
 			if (V.corpSpecBalls === 1 && V.activeSlave.dick > 0) {
@@ -240,7 +251,7 @@ window.generateMarketSlave = function(market = "kidnappers", numArcology = 1) {
 				V.activeSlave.balls = 2;
 			} else if (V.corpSpecBalls === -1) {
 				r += `The corporation removes balls where possible. `;
-				V.activeSlave.balls = 0,
+				V.activeSlave.balls = 0;
 				V.activeSlave.scrotum = 0;
 			}
 			if (typeof V.corpSpecPussy === "undefined" && typeof V.corpSpecDick === "undefined" && typeof V.corpSpecBalls === "undefined") {
@@ -342,9 +353,9 @@ window.generateMarketSlave = function(market = "kidnappers", numArcology = 1) {
 			if (V.corpSpecInjection > 0) {
 				if (V.corpSpecInjection === 1) {
 					r += `If anything, hormones are used to reduce asset sizes. `;
-					V.activeSlave.lips = jsRandom(0, 20),
-					V.activeSlave.butt = jsRandom(1, 2),
-					V.activeSlave.boobs = 10 * jsRandom(30, 60),
+					V.activeSlave.lips = jsRandom(0, 20);
+					V.activeSlave.butt = jsRandom(1, 2);
+					V.activeSlave.boobs = 10 * jsRandom(30, 60);
 					V.activeSlave.nipples = jsEither(["cute", "tiny"]);
 					if (V.activeSlave.dick > 0) {
 						V.activeSlave.dick = jsRandom(1, 2);
@@ -354,9 +365,9 @@ window.generateMarketSlave = function(market = "kidnappers", numArcology = 1) {
 					}
 				} else if (V.corpSpecInjection === 2) {
 					r += `Growth hormones are used to correct flat chests and butts. `;
-					V.activeSlave.lips = jsRandom(25, 45),
-					V.activeSlave.butt = jsRandom(3, 4),
-					V.activeSlave.boobs = 10 * jsRandom(70, 100),
+					V.activeSlave.lips = jsRandom(25, 45);
+					V.activeSlave.butt = jsRandom(3, 4);
+					V.activeSlave.boobs = 10 * jsRandom(70, 100);
 					V.activeSlave.nipples = jsEither(["cute", "partially inverted"]);
 					if (V.activeSlave.dick > 0) {
 						V.activeSlave.dick = jsRandom(3, 4);
@@ -366,9 +377,9 @@ window.generateMarketSlave = function(market = "kidnappers", numArcology = 1) {
 					}
 				} else if (V.corpSpecInjection === 3) {
 					r += `Growth hormones are used throughout slave training to ensure expansion. `;
-					V.activeSlave.lips = jsRandom(35, 55),
-					V.activeSlave.butt = jsRandom(4, 5),
-					V.activeSlave.boobs = 10 * jsRandom(120, 180),
+					V.activeSlave.lips = jsRandom(35, 55);
+					V.activeSlave.butt = jsRandom(4, 5);
+					V.activeSlave.boobs = 10 * jsRandom(120, 180);
 					V.activeSlave.nipples = jsEither(["cute", "partially inverted"]);
 					if (V.activeSlave.dick > 0) {
 						V.activeSlave.dick = jsRandom(4, 5);
@@ -378,9 +389,9 @@ window.generateMarketSlave = function(market = "kidnappers", numArcology = 1) {
 					}
 				} else if (V.corpSpecInjection === 4) {
 					r += `Advanced growth hormones are applied on a grand scale. `;
-					V.activeSlave.lips = jsRandom(55, 85),
-					V.activeSlave.butt = jsRandom(6, 8),
-					V.activeSlave.boobs = 100 * jsRandom(40, 60),
+					V.activeSlave.lips = jsRandom(55, 85);
+					V.activeSlave.butt = jsRandom(6, 8);
+					V.activeSlave.boobs = 100 * jsRandom(40, 60);
 					V.activeSlave.nipples = jsEither(["huge", "inverted"]);
 					if (V.activeSlave.dick > 0) {
 						V.activeSlave.dick = jsRandom(5, 6);
@@ -390,9 +401,9 @@ window.generateMarketSlave = function(market = "kidnappers", numArcology = 1) {
 					}
 				} else if (V.corpSpecInjection === 5) {
 					r += `Advanced growth hormones are applied with total focus on increasing slaves' productiveness. `;
-					V.activeSlave.lips = jsRandom(35, 65),
-					V.activeSlave.butt = jsRandom(4, 6),
-					V.activeSlave.boobs = 100 * jsRandom(60, 80),
+					V.activeSlave.lips = jsRandom(35, 65);
+					V.activeSlave.butt = jsRandom(4, 6);
+					V.activeSlave.boobs = 100 * jsRandom(60, 80);
 					V.activeSlave.nipples = jsEither(["huge", "inverted"]);
 					if (V.activeSlave.dick > 0) {
 						V.activeSlave.dick = jsRandom(6, 8);
@@ -429,12 +440,12 @@ window.generateMarketSlave = function(market = "kidnappers", numArcology = 1) {
 			}
 			if (V.corpSpecMilk === 1) {
 				r += `The corporation provides naturally lactating slaves `;
-				V.activeSlave.lactation = 1,
-				V.activeSlave.lactationDuration = 2,
+				V.activeSlave.lactation = 1;
+				V.activeSlave.lactationDuration = 2;
 				V.activeSlave.lactationAdaptation = 15;
 			} else if (V.corpSpecMilk === 2) {
 				r += `The corporation provides slaves with chemically induced lactation. `;
-				V.activeSlave.lactation = 2,
+				V.activeSlave.lactation = 2;
 				V.activeSlave.lactationDuration = 2;
 			}
 			break;
@@ -454,6 +465,9 @@ window.generateMarketSlave = function(market = "kidnappers", numArcology = 1) {
 				V.fixedRace = V.arcologies[market].FSSubjugationistRace;
 			}
 			V.activeSlave = GenerateNewSlave();
+			generatePronouns(V.activeSlave);
+			pronounsGenerated = true;
+			pronoun = getPronouns(V.activeSlave);
 			V.activeSlave.origin = "You bought her from ";
 			V.activeSlave.origin += V.arcologies[market].name;
 			V.activeSlave.origin += ".";
@@ -481,7 +495,7 @@ window.generateMarketSlave = function(market = "kidnappers", numArcology = 1) {
 				V.activeSlave.behavioralFlaw = "none";
 			}
 			if (V.arcologies[market].FSSubjugationist > 20) {
-				r += `They're universally V.arcologies[market].FSSubjugationistRace. `;
+				r += `They're universally ${V.arcologies[market].FSSubjugationistRace}. `;
 			}
 			if (V.arcologies[market].FSRepopulationFocus > 50) {
 				r += `They are exclusively female and all extremely pregnant. `;
@@ -510,7 +524,9 @@ window.generateMarketSlave = function(market = "kidnappers", numArcology = 1) {
 			} else if (V.arcologies[market].FSRestart > 50) {
 				r += `They have all been rendered unable to reproduce. `;
 				if (V.activeSlave.ovaries === 1) {
-					V.activeSlave.preg = -2, V.activeSlave.belly = 0, V.activeSlave.bellyPreg = 0;
+					V.activeSlave.preg = -2;
+					V.activeSlave.belly = 0;
+					V.activeSlave.bellyPreg = 0;
 				}
 				if (V.activeSlave.balls > 0) {
 					V.activeSlave.balls = 0;
@@ -640,7 +656,7 @@ window.generateMarketSlave = function(market = "kidnappers", numArcology = 1) {
 				V.activeSlave.lipsImplant = jsEither([10, 20]);
 				V.activeSlave.lips += V.activeSlave.lipsImplant;
 				if (V.arcologies[market].FSTransformationFetishistResearch === 1 && jsRandom(1, 100) <= 20) {
-					r += `This one's implants are unusually large; a showcase of what V.his home arcology is capable of. `;
+					r += `This one's implants are unusually large; a showcase of what ${pronoun.possessive} home arcology is capable of. `;
 					V.activeSlave.boobsImplant += 200*jsRandom(100, 200);
 					V.activeSlave.boobs += V.activeSlave.boobsImplant;
 					V.activeSlave.buttImplant += jsRandom(7, 12);
@@ -669,7 +685,8 @@ window.generateMarketSlave = function(market = "kidnappers", numArcology = 1) {
 						}
 					} else {
 						r += `And if they aren't, they sure don't look their age. `;
-						V.activeSlave.ageImplant = 1, V.activeSlave.faceImplant += jsRandom(10, 30);
+						V.activeSlave.ageImplant = 1;
+						V.activeSlave.faceImplant += jsRandom(10, 30);
 						ageImplantAdjustment(V.activeSlave);
 					}
 				}
@@ -702,7 +719,7 @@ window.generateMarketSlave = function(market = "kidnappers", numArcology = 1) {
 					V.activeSlave.weight = jsRandom(-30, 0);
 				}
 				if (V.arcologies[market].FSSlimnessEnthusiastResearch === 1 && jsRandom(1, 100) <= 50) {
-					r += `This one is perfectly flat; an ideal showcase of V.his home arcology's tastes. `;
+					r += `This one is perfectly flat; an ideal showcase of ${pronoun.possessive} home arcology's tastes. `;
 					V.activeSlave.boobs = 100;
 					V.activeSlave.butt = 0;
 					V.activeSlave.weight = jsRandom(-30, 0);
@@ -720,7 +737,7 @@ window.generateMarketSlave = function(market = "kidnappers", numArcology = 1) {
 					V.activeSlave.weight += jsRandom(0, 20);
 				}
 				if (V.arcologies[market].FSAssetExpansionistResearch === 1 && jsRandom(1, 100) <= 20) {
-					r += `This one is unusually large; a showcase of what V.his home arcology is capable of. `;
+					r += `This one is unusually large; a showcase of what ${pronoun.possessive} home arcology is capable of. `;
 					V.activeSlave.boobs = 200*jsRandom(100, 200);
 					V.activeSlave.butt = jsRandom(10, 20);
 					if (V.activeSlave.dick > 0 && V.seeDicks !== 0) {
@@ -748,8 +765,10 @@ window.generateMarketSlave = function(market = "kidnappers", numArcology = 1) {
 				V.activeSlave.trust += jsRandom(5, 15);
 				V.activeSlave.energy += jsRandom(0, 10);
 				if (V.arcologies[market].FSHedonisticDecadenceResearch === 1) {
-					r += `They appear to have greatly enjoyed their stay at V.arcologies[market].name. `;
-					V.activeSlave.energy += jsRandom(0, 10), V.activeSlave.trust += jsRandom(10, 20), V.activeSlave.devotion += jsRandom(10, 20);
+					r += `They appear to have greatly enjoyed their stay at ${V.arcologies[market].name}. `;
+					V.activeSlave.energy += jsRandom(0, 10);
+					V.activeSlave.trust += jsRandom(10, 20);
+					V.activeSlave.devotion += jsRandom(10, 20);
 				}
 				if (jsRandom(0, 3) === 0) {
 					V.activeSlave.behavioralFlaw = "gluttonous";
@@ -801,7 +820,8 @@ window.generateMarketSlave = function(market = "kidnappers", numArcology = 1) {
 				r += `Big balls and huge loads are commonplace among them, even if they sometimes lack dicks. They tend to be hard workers, as well. `;
 				V.activeSlave.chem += jsRandom(10, 100);
 				if (V.arcologies[market].FSRestart > 50) {
-					V.activeSlave.dick = 0, V.activeSlave.vagina = -1;
+					V.activeSlave.dick = 0;
+					V.activeSlave.vagina = -1;
 				}
 				if (V.activeSlave.balls < 20) {
 					V.activeSlave.balls += jsRandom(5, 20);
@@ -881,20 +901,20 @@ window.generateMarketSlave = function(market = "kidnappers", numArcology = 1) {
 			if ((V.arcologies[0].FSDegradationist !== "unset") && (V.arcologies[market].FSPaternalist !== "unset")) {
 				V.activeSlave.devotion = jsRandom(-90, -60);
 				V.activeSlave.trust = -20;
-				r += `'' V.arcologies[market].name'' is Paternalist, and your arcology is Degradationist. To its slaves, other niceties of social alignment are trivial. They view your arcology as a literal Hell on Earth. `;
+				r += `<b>${V.arcologies[market].name}</b> is Paternalist, and your arcology is Degradationist. To its slaves, other niceties of social alignment are trivial. They view your arcology as a literal Hell on Earth. `;
 			} else if ((V.arcologies[0].FSDegradationist !== "unset") && (V.arcologies[market].FSPaternalist !== "unset")) {
 				V.activeSlave.devotion = jsRandom(60, 90);
 				V.activeSlave.trust = 20;
-				r += `'' V.arcologies[market].name'' is Degradationist, and your arcology is Paternalist. To its slaves, other niceties of social alignment are trivial. They view your arcology as a promised land. `;
+				r += `<b>${V.arcologies[market].name}</b> is Degradationist, and your arcology is Paternalist. To its slaves, other niceties of social alignment are trivial. They view your arcology as a promised land. `;
 			} else if (V.opinion !== 0) {
 				V.activeSlave.devotion += V.opinion;
 				V.activeSlave.trust += V.opinion;
 				V.activeSlave.devotion = Math.clamp(V.activeSlave.devotion, -100, 75);
 				V.activeSlave.trust = Math.clamp(V.activeSlave.trust, -100, 75);
 				if (V.opinion > 2) {
-					r += `Your arcology's close social alignment with '' V.arcologies[market].name'' makes its slaves more accepting of the prospect of life in your arcology, and willing to trust that they'll know how to survive there. `;
+					r += `Your arcology's close social alignment with <b>${V.arcologies[market].name}</b> makes its slaves more accepting of the prospect of life in your arcology, and willing to trust that they'll know how to survive there. `;
 				} else if (V.opinion < -2) {
-					r += `Your arcology's very different culture from '' V.arcologies[market].name'''s makes its slaves unhappy with the prospect of life in your arcology, and afraid of what will happen to them there. `;
+					r += `Your arcology's very different culture from <b>${V.arcologies[market].name}</b>'s makes its slaves unhappy with the prospect of life in your arcology, and afraid of what will happen to them there. `;
 				}
 			}
 			break;
@@ -921,7 +941,8 @@ window.generateMarketSlave = function(market = "kidnappers", numArcology = 1) {
 			if (V.activeSlave.vagina > -1) {
 				V.activeSlave.vagina = jsEither([1, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 10]);
 				V.activeSlave.preg = jsRandom(-3, -1);
-				V.activeSlave.belly = 0, V.activeSlave.bellyPreg = 0;
+				V.activeSlave.belly = 0;
+				V.activeSlave.bellyPreg = 0;
 				V.activeSlave.counter.vaginal += jsRandom(0, 300);
 			}
 			V.activeSlave.anus = jsEither([1, 2, 2, 3, 3, 3, 3, 4, 4, 4]);
@@ -1085,7 +1106,9 @@ window.generateMarketSlave = function(market = "kidnappers", numArcology = 1) {
 			V.activeSlave.health = jsRandom(-10, 70);
 			if (V.activeSlave.vagina > -1) {
 				V.activeSlave.preg = jsEither([-2, -1, -1, -1, -1, -1, -1, -1, 1, 1]);
-				if (V.activeSlave.physicalAge < V.activeSlave.pubertyAgeXX) {V.activeSlave.preg = -1;}
+				if (V.activeSlave.physicalAge < V.activeSlave.pubertyAgeXX) {
+					V.activeSlave.preg = -1;
+				}
 				if (V.activeSlave.preg > 0) {
 					V.activeSlave.pregType = setPregType(V.activeSlave);
 				}
@@ -1296,7 +1319,8 @@ window.generateMarketSlave = function(market = "kidnappers", numArcology = 1) {
 			V.activeSlave.butt = jsRandom(4, 10);
 			if (V.GRI.schoolUpgrade === 2) {
 				V.activeSlave.boobs = 200*jsRandom(15, 30);
-				V.activeSlave.lactation = 2, V.activeSlave.lactationDuration = 2;
+				V.activeSlave.lactation = 2;
+				V.activeSlave.lactationDuration = 2;
 			} else {
 				V.activeSlave.boobs = 200*jsRandom(4, 20);
 			}
@@ -1426,13 +1450,21 @@ window.generateMarketSlave = function(market = "kidnappers", numArcology = 1) {
 			if (V.LDE.schoolUpgrade === 2) {
 				V.activeSlave.dick = jsEither([3, 4]);
 				V.activeSlave.balls = jsEither([3, 4]);
-				if (V.activeSlave.foreskin > 0) {V.activeSlave.foreskin = V.activeSlave.dick;}
-				if (V.activeSlave.balls > 0) {V.activeSlave.scrotum = V.activeSlave.balls;}
+				if (V.activeSlave.foreskin > 0) {
+					V.activeSlave.foreskin = V.activeSlave.dick;
+				}
+				if (V.activeSlave.balls > 0) {
+					V.activeSlave.scrotum = V.activeSlave.balls;
+				}
 			} else {
 				V.activeSlave.dick = jsEither([1, 1, 1, 2]);
 				V.activeSlave.balls = jsEither([1, 1, 1, 2]);
-				if (V.activeSlave.foreskin > 0) {V.activeSlave.foreskin = V.activeSlave.dick;}
-				if (V.activeSlave.balls > 0) {V.activeSlave.scrotum = V.activeSlave.balls;}
+				if (V.activeSlave.foreskin > 0) {
+					V.activeSlave.foreskin = V.activeSlave.dick;
+				}
+				if (V.activeSlave.balls > 0) {
+					V.activeSlave.scrotum = V.activeSlave.balls;
+				}
 				V.activeSlave.pubertyXY = 0;
 				V.activeSlave.pubertyAgeXY = jsRandom(24, 50);
 			}
@@ -1609,7 +1641,8 @@ window.generateMarketSlave = function(market = "kidnappers", numArcology = 1) {
 				V.activeSlave.career = "a dairy cow";
 				V.activeSlave.butt = jsEither([3, 3, 4, 4, 4, 5, 6]);
 				V.activeSlave.boobs = ((V.activeSlave.physicalAge*100)*2)+jsEither([-100, -100, 0, 0, 100, 100, 200, 200, 300, 500]);
-				V.activeSlave.lactation = 1, V.activeSlave.lactationDuration = 2;
+				V.activeSlave.lactation = 1;
+				V.activeSlave.lactationDuration = 2;
 				V.activeSlave.lactationAdaptation = 100;
 				V.activeSlave.anus = 1;
 				V.activeSlave.vagina = 3;
@@ -1829,7 +1862,9 @@ window.generateMarketSlave = function(market = "kidnappers", numArcology = 1) {
 			V.activeSlave.butt = sisterAge+jsRandom(2, 4);
 			V.activeSlave.boobs = 50*((10*sisterAge)+jsRandom(10, 20));
 			V.activeSlave.dick = sisterAge+jsRandom(1, 2);
-			if (V.activeSlave.foreskin > 0) {V.activeSlave.foreskin = V.activeSlave.dick;}
+			if (V.activeSlave.foreskin > 0) {
+				V.activeSlave.foreskin = V.activeSlave.dick;
+			}
 			V.activeSlave.preg = -3;
 			if (V.TFS.farmUpgrade > 0) {
 				V.activeSlave.ovaries = 1;
@@ -1918,7 +1953,7 @@ window.generateMarketSlave = function(market = "kidnappers", numArcology = 1) {
 			V.activeSlave.health = jsRandom(60, 80);
 			minHeight = jsRandom(170, 180);
 			if (V.HA.schoolUpgrade === 2) {
-				V.activeSlave.height = Math.trunc(Math.clamp(Height.random(V.activeSlave, {limitMult: [2, 15], spread: .1}), minHeight, 274));
+				V.activeSlave.height = Math.trunc(Math.clamp(Height.random(V.activeSlave, {limitMult: [2, 15], spread: 0.1}), minHeight, 274));
 				V.activeSlave.muscles = jsRandom(40, 80);
 			} else {
 				V.activeSlave.height = Math.trunc(Math.clamp(Height.random(V.activeSlave, {limitMult: [1, 4]}), minHeight, 274));
@@ -2085,7 +2120,7 @@ window.generateMarketSlave = function(market = "kidnappers", numArcology = 1) {
 					V.activeSlave.weight = jsRandom(-30, 10);
 					V.activeSlave.waist = jsRandom(10, 70);
 					V.activeSlave.chem = 10 * jsRandom(1, 3);
-					V.activeSlave.custom.tattoo = "The prominent emblem of a local gang spans the length of his shoulders.";
+					V.activeSlave.custom.tattoo = "The prominent emblem of a local gang spans the length of $his shoulders.";
 					V.activeSlave.skill.combat = 1; break;
 				case "gang thief":
 					V.activeSlave.origin = "You purchased her life at a prison sale. She was locked away for gang related raiding of several local warehouses.";
@@ -2102,7 +2137,7 @@ window.generateMarketSlave = function(market = "kidnappers", numArcology = 1) {
 					V.activeSlave.weight = jsRandom(-30, 30);
 					V.activeSlave.waist = jsRandom(10, 70);
 					V.activeSlave.chem = 10 * jsRandom(1, 3);
-					V.activeSlave.custom.tattoo = "The prominent emblem of a local gang spans the length of his shoulders.";
+					V.activeSlave.custom.tattoo = "The prominent emblem of a local gang spans the length of $his shoulders.";
 					V.activeSlave.skill.combat = 1; break;
 				case "drug peddler":
 					V.activeSlave.origin = "You purchased her life at a prison sale. She was locked away for gang related drug distribution.";
@@ -2116,7 +2151,7 @@ window.generateMarketSlave = function(market = "kidnappers", numArcology = 1) {
 					V.activeSlave.health = jsRandom(-20, 20);
 					V.activeSlave.muscles = jsRandom(20, 40);
 					V.activeSlave.chem = 10 * jsRandom(3, 5);
-					V.activeSlave.custom.tattoo = "The prominent emblem of a local gang spans the length of his shoulders.";
+					V.activeSlave.custom.tattoo = "The prominent emblem of a local gang spans the length of $his shoulders.";
 					V.activeSlave.skill.combat = 1; break;
 				case "hitman":
 					V.activeSlave.origin = "You purchased her life at a prison sale. She was locked away for a series of high profile murders.";
@@ -2381,7 +2416,7 @@ window.generateMarketSlave = function(market = "kidnappers", numArcology = 1) {
 			switch (criminal) {
 				case "racketeering":
 					V.activeSlave.career = jsEither(["a businessman", "a lawyer", "a stockbroker"]);
-					V.activeSlave.origin = `You purchased her life at a prison sale. She was ${ V.activeSlave.career } convicted of racketeering. `;
+					V.activeSlave.origin = `You purchased her life at a prison sale. She was ${V.activeSlave.career} convicted of racketeering. `;
 					V.prisonCrime = "is incarcerated for racketeering.";
 					V.activeSlave.devotion = jsRandom(-20, 20);
 					V.activeSlave.trust = jsRandom(-20, 20);
@@ -2390,7 +2425,7 @@ window.generateMarketSlave = function(market = "kidnappers", numArcology = 1) {
 					V.activeSlave.health = jsRandom(20, 60); break;
 				case "bribery":
 					V.activeSlave.career = jsEither(["a businessman", "a lawyer", "a stockbroker"]);
-					V.activeSlave.origin = `You purchased her life at a prison sale. She was ${ V.activeSlave.career } arrested and sentenced for bribing government officials. `;
+					V.activeSlave.origin = `You purchased her life at a prison sale. She was ${V.activeSlave.career} arrested and sentenced for bribing government officials. `;
 					V.prisonCrime = "is incarcerated for bribery.";
 					V.activeSlave.devotion = jsRandom(-50, -20);
 					V.activeSlave.trust = jsRandom(20, 50);
@@ -2400,7 +2435,7 @@ window.generateMarketSlave = function(market = "kidnappers", numArcology = 1) {
 					V.activeSlave.behavioralFlaw = "arrogant"; break;
 				case "blackmail":
 					V.activeSlave.career = jsEither(["a businessman", "a lawyer", "a stockbroker"]);
-					V.activeSlave.origin = `You purchased her life at a prison sale. She was ${ V.activeSlave.career } convicted of blackmail against a sorority of university students, forcing them to do sexual favors. `;
+					V.activeSlave.origin = `You purchased her life at a prison sale. She was ${V.activeSlave.career} convicted of blackmail against a sorority of university students, forcing them to do sexual favors. `;
 					V.prisonCrime = "is incarcerated for blackmail.";
 					V.activeSlave.devotion = jsRandom(-20, 20);
 					V.activeSlave.trust = jsRandom(20, 50);
@@ -2412,7 +2447,7 @@ window.generateMarketSlave = function(market = "kidnappers", numArcology = 1) {
 					V.activeSlave.fetishStrength = 100; break;
 				case "embezzlement":
 					V.activeSlave.career = jsEither(["a businessman", "a lawyer", "a stockbroker"]);
-					V.activeSlave.origin = `You purchased her life at a prison sale. She was ${ V.activeSlave.career } involved in a scandal and convicted of embezzlement. `;
+					V.activeSlave.origin = `You purchased her life at a prison sale. She was ${V.activeSlave.career} involved in a scandal and convicted of embezzlement. `;
 					V.prisonCrime = "is incarcerated for embezzlement.";
 					V.activeSlave.devotion = jsRandom(0, 20);
 					V.activeSlave.trust = jsRandom(-10, 10);
@@ -2421,7 +2456,7 @@ window.generateMarketSlave = function(market = "kidnappers", numArcology = 1) {
 					V.activeSlave.health = jsRandom(20, 60); break;
 				case "fraud":
 					V.activeSlave.career = jsEither(["a businessman", "a lawyer", "a stockbroker"]);
-					V.activeSlave.origin = `You purchased her life at a prison sale. She was ${ V.activeSlave.career } convicted of fraud. `;
+					V.activeSlave.origin = `You purchased her life at a prison sale. She was ${V.activeSlave.career} convicted of fraud. `;
 					V.prisonCrime = "is incarcerated for fraud.";
 					V.activeSlave.devotion = jsRandom(20, 40);
 					V.activeSlave.trust = jsRandom(20, 50);
@@ -2430,7 +2465,7 @@ window.generateMarketSlave = function(market = "kidnappers", numArcology = 1) {
 					V.activeSlave.health = jsRandom(20, 60); break;
 				case "tax evasion":
 					V.activeSlave.career = jsEither(["a businessman", "a lawyer", "a stockbroker"]);
-					V.activeSlave.origin = `You purchased her life at a prison sale. She was ${ V.activeSlave.career } convicted of tax evasion. `;
+					V.activeSlave.origin = `You purchased her life at a prison sale. She was ${V.activeSlave.career} convicted of tax evasion. `;
 					V.prisonCrime = "is incarcerated for tax evasion.";
 					V.activeSlave.devotion = jsRandom(-20, 0);
 					V.activeSlave.trust = jsRandom(20, 50);
@@ -2439,7 +2474,7 @@ window.generateMarketSlave = function(market = "kidnappers", numArcology = 1) {
 					V.activeSlave.health = jsRandom(20, 60); break;
 				case "malpractice":
 					V.activeSlave.career = jsEither(["a doctor", "a nurse", "a physician"]);
-					V.activeSlave.origin = `You purchased her life at a prison sale. She was ${ V.activeSlave.career } that took advantage of her position to molest and modify her patients. `;
+					V.activeSlave.origin = `You purchased her life at a prison sale. She was ${V.activeSlave.career} that took advantage of her position to molest and modify her patients. `;
 					V.prisonCrime = "is incarcerated for malpractice.";
 					V.activeSlave.devotion = jsRandom(-50, 0);
 					V.activeSlave.trust = jsRandom(-100, -50);
@@ -2448,7 +2483,7 @@ window.generateMarketSlave = function(market = "kidnappers", numArcology = 1) {
 					V.activeSlave.health = jsRandom(-40, 20); break;
 				case "abuse of power":
 					V.activeSlave.career = jsEither(["a judge", "a lawyer", "a police officer"]);
-					V.activeSlave.origin = `You purchased her life at a prison sale. She was ${ V.activeSlave.career } that took advantage of her position for her own benefit. `;
+					V.activeSlave.origin = `You purchased her life at a prison sale. She was ${V.activeSlave.career} that took advantage of her position for her own benefit. `;
 					V.prisonCrime = "is incarcerated for abuse of power.";
 					V.activeSlave.devotion = jsRandom(-100, 0);
 					V.activeSlave.trust = jsRandom(-50, 50);
@@ -2761,6 +2796,8 @@ if (V.activeSlave.vagina > -1) {
 			r += "Someone messed up. market is not known.";
 			break;
 	}
-	generatePronouns(V.activeSlave);
+	if (!pronounsGenerated) {
+		generatePronouns(V.activeSlave);
+	}
 	return r;
 };
diff --git a/src/pregmod/seFCTVremote.tw b/src/pregmod/seFCTVremote.tw
index e7d83b510e1c4976245482d2a12d8ade6c5244b2..680a37cc2bf7635f5d268dc18a6b6d7d68025e6c 100644
--- a/src/pregmod/seFCTVremote.tw
+++ b/src/pregmod/seFCTVremote.tw
@@ -119,13 +119,13 @@ $He unboxes the new remote and turns $his back to you, eagerly demonstrating how
 /* set up tech */
 <<set $activeSlave.clitPiercing = 3>>
 <<if $seeDicks == 0>>
-	<<set $activeSlave.backTat = "FCTV SERVICE for clits">>
+	<<set $activeSlave.backTat = "'FCTV SERVICE for clits' is tattooed across $his upper back.">>
 <<elseif $seeDicks == 100>>
-	<<set $activeSlave.backTat = "FCTV SERVICE for dicks">>
+	<<set $activeSlave.backTat = "'FCTV SERVICE for dicks' is tattooed across $his upper back.">>
 <<else>>
-	<<set $activeSlave.backTat = "FCTV SERVICE for clits and dicks">>
+	<<set $activeSlave.backTat = "'FCTV SERVICE for clits and dicks' is tattooed across $his upper back.">>
 <</if>>
-<<set $activeSlave.stampTat = "Shove that upgraded package here">>
+<<set $activeSlave.stampTat = "'Shove that upgraded package here' is tattooed above $his rear.">>
 <<run cashX(forceNeg(($modCost*2) + $SPcost), "slaveMod", $activeSlave)>> /* two tats and a smart piercing */
 
 At the touch of a button, $his drone whirs to a stop and begins to fall to the floor. Before it hits, you touch a second and a dart hits $him in the neck. $He collapses into darkness.
diff --git a/src/uncategorized/RESS.tw b/src/uncategorized/RESS.tw
index a6b84c458a22de5d811703f4c799a7f1ee29e45c..c588261c6ee030461de817af88c4dadb0c40b758 100644
--- a/src/uncategorized/RESS.tw
+++ b/src/uncategorized/RESS.tw
@@ -5929,7 +5929,7 @@ brought in to you. This time <<EventNameLink>> has been sent to deliver it. $He
 		<<set $activeSlave.devotion += 4>>
 		<<= BothVCheck()>>
 	<</replace>>
-<</link>><<if ($activeSlave.anus == 0) || ($activeSlave.vagina == 0)>> //This option will take $his virginity//<</if>>
+<</link>><<if ($activeSlave.anus == 0 && canDoAnal($activeSlave)) || ($activeSlave.vagina == 0 && canDoVaginal($activeSlave))>> //This option will take virginity//<</if>>
 <br><<link "Give $him a massage">>
 	<<EventNameDelink $activeSlave>>
 	<<replace "#result">>
diff --git a/src/uncategorized/saLongTermEffects.tw b/src/uncategorized/saLongTermEffects.tw
index ec3a43af2ebb299b7bbbc879ed7eed4785a3a64f..955cdcd441c82a7ce500aff67bba08f2ff2c62cc 100644
--- a/src/uncategorized/saLongTermEffects.tw
+++ b/src/uncategorized/saLongTermEffects.tw
@@ -4492,7 +4492,7 @@
 						<<else>>
 							/* pick a random starting point in the slave array and iterate (wrapping around) until finding eligible father or coming back to starting point */
 							<<if $slaves.length == 1>>
-								<<if canImpreg($slaves[$i], $slaves[$i]) && _conceptionSeed > 95 && ($slaves[$i].releaseRules == "permissive" || $slaves[$i].releaseRules == "masturbation")>>
+								<<if canImpreg($slaves[$i], $slaves[$i]) && _conceptionSeed > 95 && ($slaves[$i].releaseRules == "permissive")>>
 									<<set $slaves[$i].pregSource = $slaves[$i].ID>>
 								<</if>>
 							<<elseif $slaves[$i].releaseRules == "permissive" || ($slaves[$i].devotion <= 20 && $slaves[$i].trust > 50) || $universalRulesConsent == 0>>