diff --git a/devNotes/VersionChangeLog-Premod+LoliMod.txt b/devNotes/VersionChangeLog-Premod+LoliMod.txt
index d3fb52c80700b61708d95625e74b5dee680e6494..5b6b24408d5a4c99dae2ec48563b6b11371d7ba9 100644
--- a/devNotes/VersionChangeLog-Premod+LoliMod.txt
+++ b/devNotes/VersionChangeLog-Premod+LoliMod.txt
@@ -13,6 +13,7 @@ Pregmod
 	-RA can now manage basic abortions
 	-added abortion tracking tattoos
 	-added bulk incubator retrieval
+	-added "pFace" and "uFace" genetic traits
 	-fixes
 
 0.10.7.1-2.1.x
diff --git a/devNotes/twine CSS b/devNotes/twine CSS
index c4d4e15ab984871a01727c3ec449e86ac31b4eb0..2e3bf0334933c7400fff449a562245cff474fe57 100644
--- a/devNotes/twine CSS	
+++ b/devNotes/twine CSS	
@@ -371,6 +371,17 @@ button.accordion.active:before {
 	overflow: hidden;
 }
 
+div.accordion:before {
+	content: '\002B';
+	color: #777;
+	font-weight: bold;
+	float: left;
+	margin-right: 5px;
+}
+div.accordion.active:before {
+	content: "\2212";
+}
+
 /* begin efmCSS */
 
 #graph .linage {
diff --git a/src/cheats/mod_EditFSCheat.tw b/src/cheats/mod_EditFSCheat.tw
index e9d95ac122e579d19ae1d70f9217cb0920eceb60..434a64cf002347a1cacf655a8d7c414c462e2fee 100644
--- a/src/cheats/mod_EditFSCheat.tw
+++ b/src/cheats/mod_EditFSCheat.tw
@@ -264,9 +264,9 @@
 	<br><<radiobutton "$arcologies[0].FSTransformationFetishistDecoration" 80>> 80 (Slaves stationed in public spaces.)
 	<br><<radiobutton "$arcologies[0].FSTransformationFetishistDecoration" 100>> 100 (Remodeled exterior; Fully customized.)
 
-	<br>Law: $arcologies[0].FSTransformationFetishistLaw |
-	<<radiobutton "$arcologies[0].FSTransformationFetishistLaw" 0>> 0 (Not passed.)
-	| <<radiobutton "$arcologies[0].FSTransformationFetishistLaw" 1>> 1 (Passed.)
+	<br>Law: $arcologies[0].FSTransformationFetishistSMR |
+	<<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")]]
 
diff --git a/src/endWeek/saChoosesOwnClothes.js b/src/endWeek/saChoosesOwnClothes.js
index 18d0119a6a942e9765632e785686ad8234a3e03a..31cd1ba9301597bd11bab4105f7a2b36eef749bc 100644
--- a/src/endWeek/saChoosesOwnClothes.js
+++ b/src/endWeek/saChoosesOwnClothes.js
@@ -291,8 +291,9 @@ window.saChoosesOwnClothes = (function() {
 				}
 				if(canPenetrate(slave)){
 					wardrobeAssignment.push({text: `and wears a slutty suit to make it perfectly clear that ${his} dick is ${his} main tool in ${his} job.`, clothes: "slutty business attire"});
+				} else {
+					wardrobeAssignment.push({text: `and wears a slutty suit to give ${him} an extra touch of authority while keeping ${his} crotch available.`, clothes: "slutty business attire"});
 				}
-				wardrobeAssignment.push({text: `and wears a slutty suit to make it perfectly clear that ${his} dick is ${his} main tool in ${his} job.`, clothes: "slutty business attire"});
 			} else if(slave.assignment == "be the Schoolteacher") {
 				if(isItemAccessible("nice business attire")) {
 					wardrobeAssignment.push({text: `and wears a handsome suit to give ${him} that teacherly authority.`, clothes: "nice business attire"});
diff --git a/src/events/intro/initNationalities.tw b/src/events/intro/initNationalities.tw
index e01e8a82ddcb63281fadc52e906fbe0f845aebe9..15f56987d291a60d99dfc1f0dbb8dbe34b1899c3 100644
--- a/src/events/intro/initNationalities.tw
+++ b/src/events/intro/initNationalities.tw
@@ -182,7 +182,6 @@
 <<set $arcologies[0].FSDegradationistSMR = 0>>
 <<set $arcologies[0].FSBodyPuristLaw = 0>>
 <<set $arcologies[0].FSBodyPuristSMR = 0>>
-<<set $arcologies[0].FSTransformationFetishistLaw = 0>>
 <<set $arcologies[0].FSTransformationFetishistSMR = 0>>
 <<set $arcologies[0].FSYouthPreferentialistLaw = 0>>
 <<set $arcologies[0].FSYouthPreferentialistSMR = 0>>
diff --git a/src/gui/css/accordianStyleSheet.tw b/src/gui/css/accordianStyleSheet.tw
index a66921016a7f5855805b990f2e3ad6a8eb5452c2..324a23835182d4e6cd2f75718e5ab032e74cfca3 100644
--- a/src/gui/css/accordianStyleSheet.tw
+++ b/src/gui/css/accordianStyleSheet.tw
@@ -71,3 +71,14 @@ button.accordion.active:before {
 	max-height: 0;
 	overflow: hidden;
 }
+
+div.accordion:before {
+	content: '\002B';
+	color: #777;
+	font-weight: bold;
+	float: left;
+	margin-right: 5px;
+}
+div.accordion.active:before {
+	content: "\2212";
+}
diff --git a/src/js/accordianJS.js b/src/js/accordianJS.js
index 622a41c09b24c0bf0150731990e481fe3e3c1ff8..0b31fa239c32914f8732ba6e51f7a1dd030f661c 100644
--- a/src/js/accordianJS.js
+++ b/src/js/accordianJS.js
@@ -30,10 +30,19 @@ postdisplay["doAccordion"] = function (content) {
 		acc[i].onclick = function () {
 			this.classList.toggle("active");
 			var panel = this.nextElementSibling;
-			if (panel.style.maxHeight) {
-				panel.style.maxHeight = null;
-			} else {
-				panel.style.maxHeight = 2 * panel.scrollHeight + "px";
+			if(panel == null || panel == undefined){
+				panel = document.getElementById(this.id + "accHidden");
+				if( panel.style.display=='none' ){
+					panel.style.display = '';
+				}else{
+					panel.style.display = 'none';
+				}
+			}else{
+				if (panel.style.maxHeight) {
+					panel.style.maxHeight = null;
+				} else {
+					panel.style.maxHeight = 2 * panel.scrollHeight + "px";
+				}
 			}
 		};
 	}
diff --git a/src/js/generateGenetics.js b/src/js/generateGenetics.js
index 169ad39198ec109da1b5433dff97b887906212e0..70947a096ed063adc1c91fd775369bc44fc9e507 100644
--- a/src/js/generateGenetics.js
+++ b/src/js/generateGenetics.js
@@ -62,10 +62,11 @@ window.generateGenetics = (function() {
 		genes.father = setFatherID(actor2);
 		genes.fatherName = setFatherName(father, activeFather, actor2);
 		genes.nationality = setNationality(father, mother);
+		genes.geneticQuirks = setGeneticQuirks(father, mother, genes.gender);
 		genes.skin = setSkin(father, mother);
 		genes.race = setRace(father, mother, actor2);
 		genes.intelligence = setIntelligence(father, mother, activeMother, actor2);
-		genes.face = setFace(father, mother, activeMother, actor2);
+		genes.face = setFace(father, mother, activeMother, actor2, genes.geneticQuirks);
 		genes.faceShape = setFaceShape(father, mother);
 		genes.eyeColor = setEyeColor(father, mother, actor2);
 		genes.hColor = setHColor(father, mother, actor2);
@@ -75,7 +76,6 @@ window.generateGenetics = (function() {
 		genes.sexualFlaw = setSexualFlaw(father, mother);
 		genes.behavioralFlaw = setBehavioralFlaw(father, mother);
 		genes.fetish = setFetish(father, mother);
-		genes.geneticQuirks = setGeneticQuirks(father, mother, genes.gender);
 
 		return genes;
 	}
@@ -449,9 +449,15 @@ window.generateGenetics = (function() {
 	}
 
 	//face
-	function setFace(father, mother, activeMother, actor2) {
+	function setFace(father, mother, activeMother, actor2, genes) {
 		let face;
-		if (mother.ID === -1) {
+		if (genes.pFace > 0 && genes.uFace > 0) {
+			face = 0;
+		} else if (genes.pFace > 0) {
+			face = 100;
+		} else if (genes.uFace > 0) {
+			face = -100;
+		} else if (mother.ID === -1) {
 			if (actor2 === -6) {
 				face = jsRandom(90,100);
 			} else if (father !== 0) {
@@ -478,7 +484,7 @@ window.generateGenetics = (function() {
 		} else {
 			face = mother.face;
 		}
-		if (V.inbreeding === 1) {
+		if (V.inbreeding === 1 && genes.pFace === 0 && genes.uFace === 0) {
 			if (mother.ID !== -1) {
 				if (father !== 0 && father.ID === -1 && activeMother.breedingMark !== 1) {
 					if (face > -100 && jsRandom(1,100) > 60) {
@@ -621,6 +627,28 @@ window.generateGenetics = (function() {
 				}
 			}
 		}
+		
+		//perfect face
+		if (father !== 0) {
+			if (mother.geneticQuirks.pFace + father.geneticQuirks.pFace >= 4) {
+				quirks.pFace = 2;
+			} else if (mother.geneticQuirks.pFace === 2 || father.geneticQuirks.pFace === 2) {
+				quirks.pFace = 1;
+			}
+		} else if (mother.geneticQuirks.pFace === 2) {
+			quirks.pFace = 1;
+		}
+		
+		//ugly face
+		if (father !== 0) {
+			if (mother.geneticQuirks.uFace + father.geneticQuirks.uFace >= 4) {
+				quirks.uFace = 2;
+			} else if (mother.geneticQuirks.uFace === 2 || father.geneticQuirks.uFace === 2) {
+				quirks.uFace = 1;
+			}
+		} else if (mother.geneticQuirks.uFace === 2) {
+			quirks.uFace = 1;
+		}
 
 		return clone(quirks);
 	}
diff --git a/src/js/generateNewSlaveJS.js b/src/js/generateNewSlaveJS.js
index 16bd8542138491eb3444c99b78ce69ff81b8eea6..95d513e927d03d5cbf78b61a0381eed56ebf5b21 100644
--- a/src/js/generateNewSlaveJS.js
+++ b/src/js/generateNewSlaveJS.js
@@ -853,6 +853,11 @@ window.GenerateNewSlave = (function(){
 			case "masculine":
 				slave.face += jsRandom(-10,0);
 		}
+		if (slave.face >= 100 && slave.face >= jsRandom(-100000,100)) {
+			slave.geneticQuirks.pFace = 2;
+		} else if (slave.face <= -100 && slave.face <= jsRandom(-100,100000)) {
+			slave.geneticQuirks.uFace = 2;
+		}
 	}
 
 	function generateXYFace() {
@@ -892,6 +897,11 @@ window.GenerateNewSlave = (function(){
 			case "masculine":
 				slave.face += jsRandom(-10,0);
 		}
+		if (slave.face >= 100 && slave.face >= jsRandom(-100000,100)) {
+			slave.geneticQuirks.pFace = 2;
+		} else if (slave.face <= -100 && slave.face <= jsRandom(-100,100000)) {
+			slave.geneticQuirks.uFace = 2;
+		}
 	}
 
 	function generateXXPregAdaptation() {
diff --git a/src/pregmod/managePersonalAffairs.tw b/src/pregmod/managePersonalAffairs.tw
index 6bc456085dd1f1b3e36fcbbba139f8fd9196a9b6..721f3f7f33754af278ff2d5b0a7a812de61c22ac 100644
--- a/src/pregmod/managePersonalAffairs.tw
+++ b/src/pregmod/managePersonalAffairs.tw
@@ -24,7 +24,7 @@ You pause for a moment from your busy day to day life to return to <<if $masterS
 Looking down;
 <<PlayerBoobs>>
 <<PlayerBelly>>
-<<if $PC.balls == 2 && $PC.belly < 5000>> Your pubic mound is swells outward slightly due to your oversized prostate. <<elseif $PC.balls > 2 && $PC.belly < 10000>> Your pubic mound bulges outward noticeably thanks to your massive prostate. <</if>>
+<<if $PC.balls == 2 && $PC.belly < 5000>> Your pubic mound swells outward slightly due to your oversized prostate. <<elseif $PC.balls > 2 && $PC.belly < 10000>> Your pubic mound bulges outward noticeably thanks to your massive prostate. <</if>>
 Beneath all that;
 <<PlayerCrotch>>
 Around back;
diff --git a/src/uncategorized/arcmgmt.tw b/src/uncategorized/arcmgmt.tw
index 85debf228ead78b84226b41521efa118d99e844e..05113cef22bb2f74580c0fa5058347382d56a99b 100644
--- a/src/uncategorized/arcmgmt.tw
+++ b/src/uncategorized/arcmgmt.tw
@@ -1011,7 +1011,7 @@ _percTopClass = Math.trunc(($topClass / ($ACitizens + $ASlaves)) * 1000) / 10>>
 <<if $arcologies[0].FSPaternalistLaw == 1>>The slaves are well cared for, and it can sometimes be difficult to tell slaves from citizens.
 <<elseif $arcologies[0].FSDegradationistLaw == 1>>Most of the slaves are recent captures, since the vicious society that's taken root here uses people up quickly.<</if>>
 <<if $arcologies[0].FSBodyPuristLaw == 1>>The average slave is quite healthy.
-<<elseif $arcologies[0].FSTransformationFetishistLaw == 1>>
+<<elseif $arcologies[0].FSTransformationFetishistSMR == 1>>
 	<<if $arcologies[0].FSTransformationFetishistResearch == 1>>
 		Breast implants are almost universal; <<if $arcologies[0].FSSlimnessEnthusiast == "unset">>an M-cup bust is below average among the slave population<<else>>even the most lithe slave sports a pair of overly round chest balloons<</if>>.
 	<<else>>
diff --git a/src/uncategorized/arcologyDescription.tw b/src/uncategorized/arcologyDescription.tw
index 1330f5211e721142973f58f9dcbc0035066631bf..3f4101438a97ea5acd3f262242079bc6be2ebba3 100644
--- a/src/uncategorized/arcologyDescription.tw
+++ b/src/uncategorized/arcologyDescription.tw
@@ -628,7 +628,7 @@ Its<<if $weatherCladding == 2>> glorious<<elseif $weatherCladding > 0>> dull<<el
 <<if $arcologies[0].FSPaternalistLaw == 1>>The slaves are well cared for, and it can sometimes be difficult to tell slaves from citizens.
 <<elseif $arcologies[0].FSDegradationistLaw == 1>>Most of the slaves are recent captures, since the vicious society that's taken root here uses people up quickly.<</if>>
 <<if $arcologies[0].FSBodyPuristLaw == 1>>The average slave is quite healthy.
-<<elseif $arcologies[0].FSTransformationFetishistLaw == 1>>
+<<elseif $arcologies[0].FSTransformationFetishistSMR == 1>>
 	<<if $arcologies[0].FSTransformationFetishistResearch == 1>>
 		Breast implants are almost universal; <<if $arcologies[0].FSSlimnessEnthusiast == "unset">>an M-cup bust is below average among the slave population<<else>>even the most lithe slave sports a pair of overly round chest balloons<</if>>.
 	<<else>>
diff --git a/src/uncategorized/remoteSurgery.tw b/src/uncategorized/remoteSurgery.tw
index 70d25de441a9f79f48acf4118258caec089d6fe5..0ae78fc2bab676764af5a15437d4f223ab1f6772 100644
--- a/src/uncategorized/remoteSurgery.tw
+++ b/src/uncategorized/remoteSurgery.tw
@@ -1325,6 +1325,14 @@ $He has
 				//$He already has received the plasticity increasing elasticity treatment//
 			<</if>>
 		<</if>>
+		<<if $activeSlave.geneticQuirks.pFace == 2>>
+			<br>&nbsp;&nbsp;&nbsp;&nbsp;
+			[[Prevent passing of perfect faces|Surgery Degradation][$activeSlave.geneticQuirks.pFace = 0,cashX(forceNeg($surgeryCost*4), "slaveSurgery", $activeSlave), $activeSlave.health -= 40, $activeSlave.chem += 100,$surgeryType = "gene treatment"]]
+		<</if>>
+		<<if $activeSlave.geneticQuirks.uFace == 2>>
+			<br>&nbsp;&nbsp;&nbsp;&nbsp;
+			[[Prevent passing of hideous faces|Surgery Degradation][$activeSlave.geneticQuirks.uFace = 0,cashX(forceNeg($surgeryCost*4), "slaveSurgery", $activeSlave), $activeSlave.health -= 40, $activeSlave.chem += 100,$surgeryType = "gene treatment"]]
+		<</if>>
 		<<if $activeSlave.geneticQuirks.hyperFertility == 2>>
 			<br>&nbsp;&nbsp;&nbsp;&nbsp;
 			[[Correct genetic hyper fertility|Surgery Degradation][$activeSlave.geneticQuirks.hyperFertility = 0,cashX(forceNeg($surgeryCost*4), "slaveSurgery", $activeSlave), $activeSlave.health -= 40, $activeSlave.chem += 100,$surgeryType = "gene treatment"]]
diff --git a/src/utility/descriptionWidgets.tw b/src/utility/descriptionWidgets.tw
index a6401585bc668014cdf47c8bfa54dc7a0029cb08..914b6a7aca948a6441633aab770b476f08899d45 100644
--- a/src/utility/descriptionWidgets.tw
+++ b/src/utility/descriptionWidgets.tw
@@ -258,6 +258,14 @@
 <<widget "geneticQuirkAssessment">>
 
 <<if $geneticMappingUpgrade == 1>>
+	<<if $activeSlave.geneticQuirks.pFace == 2>>
+		$He has an exceedingly rare trait associated with perfect facial beauty.
+		<<if $activeSlave.geneticQuirks.uFace == 2>>
+			Oddly enough, $he also possesses a conflicting trait for raw uglyness; the two average each other out.
+		<</if>>
+	<<elseif $activeSlave.geneticQuirks.uFace == 2>>
+		$He has an exceedingly rare trait associated with some of the ugliest mugs in history.
+	<</if>>
 	<<if $activeSlave.geneticQuirks.fertility == 2 && $activeSlave.geneticQuirks.hyperFertility == 2>>
 		$He has a unique genetic condition resulting in inhumanly high
 		<<if $activeSlave.ovaries == 1 || $activeSlave.mpreg == 1>>