diff --git a/src/endWeek/saTakeClasses.js b/src/endWeek/saTakeClasses.js
index 22495e4211661c649b670f1e2588822547c4b593..aff9ba89a903b2b24c1d94f33a9c17680a20dc45 100644
--- a/src/endWeek/saTakeClasses.js
+++ b/src/endWeek/saTakeClasses.js
@@ -299,66 +299,52 @@ App.SlaveAssignment.takeClasses = (function() {
 	function skillLessons(slave) {
 		let undevoted = 0; // forces an obedience lesson to replace the first skill lesson
 		let skillIncrease = 0;
+		let lessons;
+		const set = new Set();
 		if (V.schoolroomRemodelBimbo !== 1 || slave.assignment !== Job.SCHOOL) {
 			skillIncrease = (10 + Math.floor((slave.intelligence + slave.intelligenceImplant) / 32));
 		} else {
 			skillIncrease = (10 + (Math.abs(Math.floor((slave.intelligence + slave.intelligenceImplant) / 32))));
 		}
-		for (let lessons = 0; lessons < Math.max(1, learning); lessons++) {
+		for (lessons = 0; lessons < Math.max(1, learning); lessons++) {
 			if (slave.devotion <= 20 && undevoted === 0) {
-				r += ` Since ${he} is wanting in basic obedience, ${he} suffers through courses on <span class="devotion inc">${his} place</span> in the Free Cities world.`;
+				set.add(` Since ${he} is wanting in basic obedience, ${he} suffers through courses on <span class="devotion inc">${his} place</span> in the Free Cities world.`);
 				slave.devotion += 10;
 				undevoted++;
 			} else if (slave.skill.oral <= 10) {
-				r += ` Since ${he} is orally incompetent, ${he} is taught basic gag reflex suppression exercises and other simple oral things.`;
-				r += ` ${slaveSkillIncrease('oral', slave, skillIncrease)}`;
+				set.add(` Since ${he} is orally incompetent, ${he} is taught basic gag reflex suppression exercises and other simple oral things. ${slaveSkillIncrease('oral', slave, skillIncrease)}`);
 			} else if (slave.skill.vaginal <= 10 && slave.vagina > 0 && canDoVaginal(slave)) {
-				r += ` Since ${he} is unskilled at using ${his} pussy, ${he} is taught Kegel exercises and other simple vaginal skills.`;
-				r += ` ${slaveSkillIncrease('vaginal', slave, skillIncrease)}`;
+				set.add(` Since ${he} is unskilled at using ${his} pussy, ${he} is taught Kegel exercises and other simple vaginal skills. ${slaveSkillIncrease('vaginal', slave, skillIncrease)}`);
 			} else if (slave.skill.vaginal <= 10 && slave.vagina >= 0) {
-				r += ` Since ${he} is unskilled at using ${his} pussy and not permitted to learn through practice, ${he} is taught Kegel exercises, vaginal basics and several new positions.`;
-				r += ` ${slaveSkillIncrease('vaginal', slave, skillIncrease)}`;
+				set.add(` Since ${he} is unskilled at using ${his} pussy and not permitted to learn through practice, ${he} is taught Kegel exercises, vaginal basics and several new positions. ${slaveSkillIncrease('vaginal', slave, skillIncrease)}`);
 			} else if (slave.skill.anal <= 10 && slave.anus > 0 && canDoAnal(slave)) {
-				r += ` Since ${he} is a novice at taking it up ${his} butt, ${he} is taught relaxation exercises and other simple anal basics.`;
-				r += ` ${slaveSkillIncrease('anal', slave, skillIncrease)}`;
+				set.add(` Since ${he} is a novice at taking it up ${his} butt, ${he} is taught relaxation exercises and other simple anal basics. ${slaveSkillIncrease('anal', slave, skillIncrease)}`);
 			} else if (slave.skill.anal <= 10 && slave.anus >= 0) {
-				r += ` Since ${he} is a novice at taking it up ${his} butt and not permitted to learn through practice, ${he} is taught relaxation exercises and other simple anal basics.`;
-				r += ` ${slaveSkillIncrease('anal', slave, skillIncrease)}`;
+				set.add(` Since ${he} is a novice at taking it up ${his} butt and not permitted to learn through practice, ${he} is taught relaxation exercises and other simple anal basics. ${slaveSkillIncrease('anal', slave, skillIncrease)}`);
 			} else if (slave.skill.whoring <= 10) {
-				r += ` Since ${he} has little idea what's involved in selling ${his} body, ${he} is taught basic safety practices and other simple prostitution skills.`;
-				r += ` ${slaveSkillIncrease('whoring', slave, skillIncrease)}`;
+				set.add(` Since ${he} has little idea what's involved in selling ${his} body, ${he} is taught basic safety practices and other simple prostitution skills. ${slaveSkillIncrease('whoring', slave, skillIncrease)}`);
 			} else if (slave.skill.entertainment <= 10) {
-				r += ` Since ${his} entertainment value is limited to ${his} holes, ${he} is taught simple conversational skills and other courtesan's essentials.`;
-				r += ` ${slaveSkillIncrease('entertainment', slave, skillIncrease)}`;
+				set.add(` Since ${his} entertainment value is limited to ${his} holes, ${he} is taught simple conversational skills and other courtesan's essentials. ${slaveSkillIncrease('entertainment', slave, skillIncrease)}`);
 			} else if (V.schoolroomUpgradeSkills === 1) {
 				if (slave.skill.oral <= 30) {
-					r += ` Having completed the basic sex slave curriculum, ${he} studies more advanced ways to use ${his} lips and tongue to please cocks, cunts, and asses.`;
-					r += ` ${slaveSkillIncrease('oral', slave, skillIncrease)}`;
+					set.add(` Having completed the basic sex slave curriculum, ${he} studies more advanced ways to use ${his} lips and tongue to please cocks, cunts, and asses. ${slaveSkillIncrease('oral', slave, skillIncrease)}`);
 				} else if (slave.skill.whoring <= 30) {
-					r += ` Having completed the basic sex slave curriculum, ${he} studies intermediate prostitution, including how to stay as safe as possible and maximize ${his} efficiency.`;
-					r += ` ${slaveSkillIncrease('whoring', slave, skillIncrease)}`;
+					set.add(` Having completed the basic sex slave curriculum, ${he} studies intermediate prostitution, including how to stay as safe as possible and maximize ${his} efficiency. ${slaveSkillIncrease('whoring', slave, skillIncrease)}`);
 				} else if (slave.skill.entertainment <= 30) {
-					r += ` Having completed the basic sex slave curriculum, ${he} studies courtesanship, including social dynamics and flirtation more subtle than straightforward begging for sex.`;
-					r += ` ${slaveSkillIncrease('entertainment', slave, skillIncrease)}`;
+					set.add(` Having completed the basic sex slave curriculum, ${he} studies courtesanship, including social dynamics and flirtation more subtle than straightforward begging for sex. ${slaveSkillIncrease('entertainment', slave, skillIncrease)}`);
 				} else if (slave.skill.vaginal <= 30 && slave.vagina >= 0) {
-					r += ` Having completed the basic sex slave curriculum, ${he} studies more advanced techniques and exotic positions to make use of ${his} `;
-					if (slave.vagina === 0) {
-						r += `virgin pussy for use in ${his} first time.`;
-					} else {
-						r += `pussy.`;
-					}
-					r += ` ${slaveSkillIncrease('vaginal', slave, skillIncrease)}`;
+					set.add(` Having completed the basic sex slave curriculum, ${he} studies more advanced techniques and exotic positions to make use of ${his} ${(slave.vagina === 0) ? `virgin pussy for use in ${his} first time`:`pussy`}. ${slaveSkillIncrease('vaginal', slave, skillIncrease)}`);
 				} else if (slave.skill.anal <= 30) {
-					r += ` Having completed the basic sex slave curriculum, ${he} studies more advanced techniques and exotic positions to make use of ${his} `;
-					if (slave.anus === 0) {
-						r += `virgin ass for use in ${his} first time.`;
-					} else {
-						r += `ass.`;
-					}
-					r += ` ${slaveSkillIncrease('anal', slave, skillIncrease)}`;
+					set.add(` Having completed the basic sex slave curriculum, ${he} studies more advanced techniques and exotic positions to make use of ${his} ${(slave.anus === 0) ? `virgin ass for use in ${his} first time` : `ass`}. ${slaveSkillIncrease('anal', slave, skillIncrease)}`);
 				}
 			}
 		}
+		if (lessons > 1) {
+			r += ` ${He} passed ${num(lessons)} exams this week.`;
+		}
+		for (const item of set) {
+			r += item;
+		}
 	}
 
 	/**
diff --git a/src/npc/descriptions/mouth.js b/src/npc/descriptions/mouth.js
index 2e31bcbc1cb5e75abe23cbd88db5538cccf8f9d8..41f0efc530cf68ef5e8de7d4f1bee56e82ff093f 100644
--- a/src/npc/descriptions/mouth.js
+++ b/src/npc/descriptions/mouth.js
@@ -56,9 +56,9 @@ App.Desc.mouth = function(slave) {
 	} else {
 		if (canTalk(slave)) {
 			if (slave.lips > 70) {
-				r.push(`${He} can barely enunciate past ${his} dick-sucking lips; '${getWrittenTitle(slave)}' comes out as '${lispReplace(getWrittenTitle(slave))}.'`);
 				const {title} = getEnunciation(slave);
 				const writtenTitle = getWrittenTitle(slave);
+				r.push(`${He} can barely enunciate past ${his} dick-sucking lips;`);
 				if (title === writtenTitle) {
 					if (setup.badNames.includes(capFirstChar(writtenTitle))) {
 						r.push(`unfortunately`);
diff --git a/src/npc/interaction/fRelation.tw b/src/npc/interaction/fRelation.tw
index 76a208997178b29c7f2c363497e3cd1e4ec84069..6cc29e525f815fcb5f7e903325fce0236280a026 100644
--- a/src/npc/interaction/fRelation.tw
+++ b/src/npc/interaction/fRelation.tw
@@ -33,7 +33,7 @@
 <<run Enunciate(getSlave($AS))>>
 <<run App.Utils.setLocalPronouns(getSlave($AS))>>
 <<run addPartner(getSlave($AS), -1)>>
-<<run addPartner(getSlave($AS), $partner)>>
+<<run addPartner(getSlave($AS), $slaves[$partner])>>
 
 <<setLocalPronouns $slaves[$partner] 2>>