diff --git a/js/003-data/gameVariableData.js b/js/003-data/gameVariableData.js
index cba57053206e48835129ad52156d033823169493..fa2e590df7737d3983ad3b5a3ada8aec9dfd0138 100644
--- a/js/003-data/gameVariableData.js
+++ b/js/003-data/gameVariableData.js
@@ -43,6 +43,7 @@ App.Data.defaultGameStateVariables = {
 			abbreviation: {
 				clothes: 2,
 				devotion: 2,
+				beauty: 2,
 				diet: 2,
 				drugs: 2,
 				genitalia: 2,
diff --git a/src/002-config/fc-version.js b/src/002-config/fc-version.js
index edb1418f75b8392ba3077b3c209b9980e33ba683..0774ad19271af2bde0d1275f753623595a9e2013 100644
--- a/src/002-config/fc-version.js
+++ b/src/002-config/fc-version.js
@@ -2,5 +2,5 @@ App.Version = {
 	base: "0.10.7.1", // The vanilla version the mod is based off of, this should never be changed.
 	pmod: "4.0.0-alpha.27",
 	commitHash: null,
-	release: 1207, // When getting close to 2000, please remove the check located within the onLoad() function defined at line five of src/js/eventHandlers.js.
+	release: 1208, // When getting close to 2000, please remove the check located within the onLoad() function defined at line five of src/js/eventHandlers.js.
 };
diff --git a/src/data/backwardsCompatibility/backwardsCompatibility.js b/src/data/backwardsCompatibility/backwardsCompatibility.js
index 4846a3c8128ccd39d65be2e82217f83463f96b15..e72f4e5b889ee8b287f3d5a96c795bda67a2dc5f 100644
--- a/src/data/backwardsCompatibility/backwardsCompatibility.js
+++ b/src/data/backwardsCompatibility/backwardsCompatibility.js
@@ -357,11 +357,16 @@ App.Update.globalVariables = function(node) {
 
 		if (typeof V.abbreviateClothes === "number") {
 			V.UI.slaveSummary = App.UI.SlaveSummary.makeNewState();
-			for (const key of ["clothes", "devotion", "diet", "drugs", "genitalia", "health", "hormoneBalance",
+			for (const key of ["clothes", "devotion", "beauty", "diet", "drugs", "genitalia", "health", "hormoneBalance",
 				"mental", "nationality", "origins", "physicals", "race", "rules", "rulesets", "skills"]) {
 				V.UI.slaveSummary.abbreviation[key] = V["abbreviate" + capFirstChar(key)] || V.UI.slaveSummary.abbreviation[key];
 			}
 		}
+
+		if (typeof V.UI.slaveSummary.abbreviation.beauty === "undefined") {
+			V.UI.slaveSummary.abbreviation.beauty = 0;
+		}
+		
 		if (typeof V.UI.compressSocialEffects !== "number") {
 			V.UI.compressSocialEffects = 0;
 		}
diff --git a/src/events/intro/introSummary.js b/src/events/intro/introSummary.js
index 90b566e3190bc00437df18ea22062e493f8859b8..08ba583b8bbfb491bd8f353c5aeb376c1d3354ad 100644
--- a/src/events/intro/introSummary.js
+++ b/src/events/intro/introSummary.js
@@ -95,6 +95,7 @@ App.Intro.summary = function() {
 						V.UI.slaveSummary.abbreviation,
 						{
 							devotion: 1,
+							beauty: 1,
 							rules: 1,
 							clothes: 2,
 							health: 1,
diff --git a/src/js/extendedFamilyModeJS.js b/src/js/extendedFamilyModeJS.js
index b2f901ccd85c3c13ad36160bcc4a912607486adf..921f22346a14be29a4bebf4f66d9eea869ddc6ac 100644
--- a/src/js/extendedFamilyModeJS.js
+++ b/src/js/extendedFamilyModeJS.js
@@ -68,6 +68,10 @@ globalThis.isParentP = function(daughter, parent) {
  * @returns {boolean}
  */
 globalThis.isGrandmotherP = function(granddaughter, grandmother) {
+	if (!V.showDistantRelatives) {
+		return false;
+	}
+
 	const father = getRelative(granddaughter.father);
 	const mother = getRelative(granddaughter.mother);
 	return (mother && (mother.mother === grandmother.ID)) ||
@@ -80,6 +84,10 @@ globalThis.isGrandmotherP = function(granddaughter, grandmother) {
  * @returns {boolean}
  */
 globalThis.isGrandfatherP = function(granddaughter, grandfather) {
+	if (!V.showDistantRelatives) {
+		return false;
+	}
+
 	const father = getRelative(granddaughter.father);
 	const mother = getRelative(granddaughter.mother);
 	return (mother && (mother.father === grandfather.ID)) ||
@@ -92,6 +100,10 @@ globalThis.isGrandfatherP = function(granddaughter, grandfather) {
  * @returns {boolean}
  */
 globalThis.isGrandparentP = function(granddaughter, grandparent) {
+	if (!V.showDistantRelatives) {
+		return false;
+	}
+	
 	return isGrandmotherP(granddaughter, grandparent) || isGrandfatherP(granddaughter, grandparent);
 };
 
diff --git a/src/js/slaveSummaryWidgets.js b/src/js/slaveSummaryWidgets.js
index 447b1985b52263034cb24d77f9cf1260844e9b1a..75270d49c35d7832da0234a3d9c6e2947df6d2f9 100644
--- a/src/js/slaveSummaryWidgets.js
+++ b/src/js/slaveSummaryWidgets.js
@@ -19,6 +19,21 @@ App.UI.SlaveSummaryRenderers = function() {
 			}
 		},
 
+		/**
+		 * @param {App.Entity.SlaveState} slave
+		 * @param {Node} c
+		 */
+		beauty: function(slave, c) {
+		
+			const makeSpan = helpers.makeSpan;
+			const style1 = ["pink", "strong"];
+			const style2 = ["coral", "strong"];
+			// Beauty
+			makeSpan(c, "B[" + Beauty(slave) + "].", style1);
+			// Fresult
+			makeSpan(c, "FR[" + FResult(slave) + "].", style2);
+		},
+
 		/**
 		 * @param {App.Entity.SlaveState} slave
 		 * @param {Node} c
@@ -402,6 +417,22 @@ App.UI.SlaveSummaryRenderers = function() {
 					slave.trust, true);
 			}
 		},
+
+		/**
+		 * @param {App.Entity.SlaveState} slave
+		 * @param {Node} c
+		 */
+		beauty: function(slave, c) {
+		
+			const makeSpan = helpers.makeSpan;
+			const style1 = ["pink", "strong"];
+			const style2 = ["coral", "strong"];
+			// Beauty
+			makeSpan(c, "Beauty[" + Beauty(slave) + "].", style1);
+			// Fresult
+			makeSpan(c, "Sex Score[" + FResult(slave) + "].", style2);
+		},
+		
 		/**
 		 * @param {App.Entity.SlaveState} slave
 		 * @param {Node} c
@@ -811,6 +842,7 @@ App.UI.SlaveSummary = function() {
 	const delegates = {
 		clothes: emptyRenderer,
 		devotion: emptyRenderer,
+		beauty: emptyRenderer,
 		rules: emptyRenderer,
 		height: emptyRenderer,
 		diet: emptyRenderer,
@@ -838,6 +870,7 @@ App.UI.SlaveSummary = function() {
 			abbreviation: {
 				clothes: 2,
 				devotion: 2,
+				beauty: 2,
 				diet: 2,
 				drugs: 2,
 				genitalia: 2,
@@ -920,6 +953,7 @@ App.UI.SlaveSummary = function() {
 		let para = helpers.makeParagraph(res);
 
 		delegates.devotion(slave, para);
+		delegates.beauty(slave, para);
 		if (!slave.fuckdoll) {
 			delegates.rules(slave, para);
 		}
@@ -979,6 +1013,7 @@ App.UI.SlaveSummary = function() {
 		}
 
 		appendSAHOption("devotion", "Mental stats are");
+		appendSAHOption("beauty", "Beauty and sex score stats are");
 		appendSAHOption("mental", "Mental attributes are");
 		appendSAHOption("rules", "Rules are");
 		appendSAHOption("health", "Health is");
diff --git a/src/js/speech.js b/src/js/speech.js
index b0e0ac499961403e7313487db85a31349a8789e1..a4efc5f2e9518ba9e5f9bf7dac7a592502242442 100644
--- a/src/js/speech.js
+++ b/src/js/speech.js
@@ -50,6 +50,39 @@ globalThis.getEnunciation = function(slave) {
 					} else {
 						ret.title = "Thithter";
 					}
+				} 
+			} else if (isAunt(V.PC, slave)){
+				if (V.PC.title === 1) {
+					ret.title = "Nephew";
+				} else if (V.PC.title === 0) {
+					ret.title = "Niethe";
+				}
+			}
+			else if (isAunt(slave, V.PC)){
+				if (V.PC.title === 1) {
+					ret.title = "Uncle";
+				} else if (V.PC.title === 0) {
+					ret.title = "Aunt";
+				}
+			} else if (areCousins(slave, V.PC)){
+				ret.title = "Couthin";
+			} else if (isGrandfatherP(V.PC, slave) || isGrandmotherP(V.PC, slave) ){
+				if (V.PC.title === 1) {
+					ret.title = "Grandthon";
+				} else {
+					ret.title = "Granddaughter";
+				}
+			} else if (isGrandfatherP(slave, V.PC)){
+				if (slave.actualAge < 18) {
+					ret.title = "Grand-papa";
+				} else {
+					ret.title = "Grandfather";
+				}
+			} else if (isGrandmotherP(slave, V.PC)){
+				if (slave.actualAge < 18) {
+					ret.title = "Grand-mama";
+				} else {
+					ret.title = "Grandmother";
 				}
 			}
 		}
@@ -109,6 +142,38 @@ globalThis.getEnunciation = function(slave) {
 						ret.title = "Sister";
 					}
 				}
+			} else if (isAunt(V.PC, slave)){
+				if (V.PC.title === 1) {
+					ret.title = "Nephew";
+				} else if (V.PC.title === 0) {
+					ret.title = "Niece";
+				}
+			} else if (isAunt(slave, V.PC)){
+				if (V.PC.title === 1) {
+					ret.title = "Uncle";
+				} else if (V.PC.title === 0) {
+					ret.title = "Aunt";
+				}
+			} else if (areCousins(slave, V.PC)){
+				ret.title = "Cousin";
+			} else if (isGrandfatherP(V.PC, slave) || isGrandmotherP(V.PC, slave)){
+				if (V.PC.title === 1) {
+					ret.title = "Grandson";
+				} else {
+					ret.title = "Granddaughter";
+				}
+			} else if (isGrandfatherP(slave, V.PC)){
+				if (slave.actualAge < 18) {
+					ret.title = "Grand-papa";
+				} else {
+					ret.title = "Grandfather";
+				}
+			} else if (isGrandmotherP(slave, V.PC)){
+				if (slave.actualAge < 18) {
+					ret.title = "Grand-mama";
+				} else {
+					ret.title = "Grandmother";
+				}
 			}
 		}
 		if (slave.custom.title !== undefined && slave.custom.title !== "") {
diff --git a/src/npc/interaction/fFeelings.js b/src/npc/interaction/fFeelings.js
index 9d7b328173a2e99ed6d5aa63f13957c57af4a5a4..5f0d9bbbc8ac8a9451a1d5b6e9831e99fdfc18e5 100644
--- a/src/npc/interaction/fFeelings.js
+++ b/src/npc/interaction/fFeelings.js
@@ -1907,6 +1907,15 @@ App.Interact.fFeelings = function(slave) {
 						text.push(`${Spoken(slave, `I — I'm fucking my ${sister2},"`)} ${he} bursts out, blushing even harder. ${Spoken(slave, `"It's so fucking wrong, but ${he2}'s so hot, I can't stop.`)}`);
 					} else if (areSisters(slave, partner) === 3) {
 						text.push(`${Spoken(slave, `I — I'm fucking my half-${sister2},"`)} ${he} bursts out, blushing even harder. ${Spoken(slave, `"It's so fucking wrong, but ${he2}'s so hot, I can't stop.`)}`);
+					} else if (areCousins(slave, partner)) {
+						text.push(`${Spoken(slave, `I — I'm fucking my cousin,"`)} ${he} bursts out, blushing even harder. ${Spoken(slave, `"It's so fucking wrong, but ${he2}'s so hot, I can't stop.`)}`);
+					} else if (isAunt(slave, partner)) {
+						const aunt = (partner.genes === "XY" && useMaleTerms)? `uncle`: `aunt`;
+						text.push(`${Spoken(slave, `I — I'm fucking my ${aunt},"`)} ${he} bursts out, blushing even harder. ${Spoken(slave, `"It's so fucking wrong, but ${he2}'s so hot, I can't stop.`)}`);
+					} else if (isAunt(partner, slave)) {
+						const niece = (partner.genes === "XY" && useMaleTerms)? `nephew`: `niece`;
+						text.push(`${Spoken(slave, `I — I'm fucking my ${niece},"`)} ${he} bursts out, blushing even harder. ${Spoken(slave, `"It's so fucking wrong, but ${he2} has such a hot little body, I can't stop.`)}`);
+
 					} else if ((slave.actualAge + 14) < partner.actualAge) {
 						text.push(`${Spoken(slave, `${He2}'s old enough to be my ${mother2}."`)} ${He} looks down, blushing a little harder. ${Spoken(slave, `"But I'm lucky, ${he2}'s such a hot ${milf2}.`)}`);
 					} else if ((slave.actualAge - 14) > partner.actualAge) {