From 2f9bc9d0cbe2a43d2cf2b3835cdeec3bd51f0af7 Mon Sep 17 00:00:00 2001
From: Blank_Alt <12406-Blank_Alt@users.noreply.gitgud.io>
Date: Fri, 3 Jun 2022 03:50:52 +0000
Subject: [PATCH] Assignement job conversion

---
 js/003-data/policiesData.js                   |  8 ++--
 js/004-base/SurgeryProcedure.js               |  4 +-
 js/medicine/surgery/genitials/geld.js         |  2 +-
 js/medicine/surgery/genitials/maleToFemale.js |  2 +-
 js/medicine/surgery/nipples/endLactation.js   |  2 +-
 src/descriptions/officeDescription.js         |  4 +-
 src/endWeek/economics/arcmgmt.js              |  4 +-
 src/endWeek/economics/neighborsDevelopment.js |  4 +-
 src/endWeek/economics/personalNotes.js        |  4 +-
 src/endWeek/events/death.js                   | 12 ++---
 src/endWeek/nextWeek/nextWeek.js              |  8 ++--
 src/endWeek/reports/clinicReport.js           |  4 +-
 src/endWeek/reports/penthouseReport.js        | 36 +++++++--------
 src/endWeek/reports/schoolroomReport.js       |  4 +-
 src/endWeek/reports/spaReport.js              |  4 +-
 src/endWeek/saLongTermEffects.js              | 20 ++++-----
 src/endWeek/saLongTermMentalEffects.js        | 44 +++++++++----------
 src/endWeek/saLongTermPhysicalEffects.js      | 14 +++---
 src/endWeek/saPregnancy.js                    |  8 ++--
 src/endWeek/saRules.js                        |  2 +-
 src/events/PESS/pessMadamStrategy.js          |  4 +-
 src/events/PETS/petsNurseMolestation.js       |  2 +-
 src/events/RE/reNickname.js                   |  2 +-
 src/events/RESS/milkgasm.js                   |  2 +-
 src/events/RESS/review/confidentTanning.js    |  4 +-
 src/events/RESS/review/cowMilking.js          |  2 +-
 src/events/intro/acquisition.js               | 16 +++----
 .../nonRandom/daughters/pCoupAttempt.js       |  4 +-
 .../daughters/pUndergroundRailroad.js         |  2 +-
 src/events/nonRandom/pBioreactorPerfected.js  |  2 +-
 src/events/scheduled/seNicaeaCouncil.js       | 12 ++---
 .../dairy/freeRangeDairyAssignmentScene.js    |  2 +-
 src/facilities/incubator/incubatorInteract.js |  2 +-
 src/facilities/nursery/nursery.js             |  2 +-
 .../penthouse/penthouseFramework.js           |  2 +-
 src/facilities/surgery/surgeryPassageLower.js |  2 +-
 src/interaction/sellSlave.js                  |  8 ++--
 src/interaction/siRules.js                    | 12 ++---
 src/interaction/subordinateTargeting.js       |  4 +-
 src/js/birth/birth.js                         |  2 +-
 src/js/utilsSlave.js                          |  2 +-
 src/npc/descriptions/belly/belly.js           |  4 +-
 src/npc/descriptions/butt/butt.js             |  6 +--
 src/npc/descriptions/butt/buttplug.js         |  2 +-
 src/npc/descriptions/crotch/crotch.js         |  2 +-
 src/npc/descriptions/crotch/dick.js           |  2 +-
 src/npc/descriptions/crotch/vagina.js         |  8 ++--
 src/npc/descriptions/describePiercings.js     |  2 +-
 src/npc/descriptions/longSlave.js             |  4 +-
 src/npc/descriptions/mouth.js                 |  2 +-
 src/npc/descriptions/sceneIntro.js            |  4 +-
 src/npc/generate/newSlaveIntro.js             | 10 ++---
 52 files changed, 160 insertions(+), 166 deletions(-)

diff --git a/js/003-data/policiesData.js b/js/003-data/policiesData.js
index 8bdc865473e..53ff399abb6 100644
--- a/js/003-data/policiesData.js
+++ b/js/003-data/policiesData.js
@@ -1759,9 +1759,9 @@ App.Data.Policies.Selection = {
 						t += ` slaveowners,`;
 					}
 					t += ` enhances`;
-					if (V.nicaea.assignment === "whore") {
+					if (V.nicaea.assignment === Job.WHORE) {
 						t += ` prostitution,`;
-					} else if (V.nicaea.assignment === "serve the public") {
+					} else if (V.nicaea.assignment === Job.PUBLIC) {
 						t += ` public service,`;
 					} else {
 						t += ` fucktoy duty,`;
@@ -1790,9 +1790,9 @@ App.Data.Policies.Selection = {
 						t += ` slaveowners,`;
 					}
 					t += ` enhances`;
-					if (V.nicaea.assignment === "whore") {
+					if (V.nicaea.assignment === Job.WHORE) {
 						t += ` prostitution,`;
-					} else if (V.nicaea.assignment === "serve the public") {
+					} else if (V.nicaea.assignment === Job.PUBLIC) {
 						t += ` public service,`;
 					} else {
 						t += ` fucktoy duty,`;
diff --git a/js/004-base/SurgeryProcedure.js b/js/004-base/SurgeryProcedure.js
index dc5b65e44a2..07579c4e4ab 100644
--- a/js/004-base/SurgeryProcedure.js
+++ b/js/004-base/SurgeryProcedure.js
@@ -100,8 +100,8 @@ App.Medicine.Surgery.Procedure = class {
 		const reasons = [];
 
 		/* disallow surgery for slaves on certain assignments */
-		if (this.originalSlave.assignment === "be your agent" ||
-			this.originalSlave.assignment === "live with your agent") {
+		if (this.originalSlave.assignment === Job.AGENT ||
+			this.originalSlave.assignment === Job.AGENTPARTNER) {
 			const {his, him} = getPronouns(this.originalSlave);
 			reasons.push(`You must retrieve ${this.originalSlave.slaveName} from ${his} assignment before performing surgery on ${him}.`);
 		}
diff --git a/js/medicine/surgery/genitials/geld.js b/js/medicine/surgery/genitials/geld.js
index 45f63cb509b..b811a499057 100644
--- a/js/medicine/surgery/genitials/geld.js
+++ b/js/medicine/surgery/genitials/geld.js
@@ -22,7 +22,7 @@ App.Medicine.Surgery.Reactions.Geld = class extends App.Medicine.Surgery.SimpleR
 			reaction.trust -= 20;
 			reaction.devotion -= 20;
 		}
-		if ((slave.assignment === "get milked" || slave.assignment === "work in the dairy") && slave.lactation === 0) {
+		if ((slave.assignment === Job.MILKED || slave.assignment === Job.DAIRY) && slave.lactation === 0) {
 			r.push(`<span class="job change">${His} assignment has defaulted to rest.</span>`);
 			reaction.shortReaction.push(`<span class="job change">${His} assignment has defaulted to rest.</span>`);
 			removeJob(slave, slave.assignment);
diff --git a/js/medicine/surgery/genitials/maleToFemale.js b/js/medicine/surgery/genitials/maleToFemale.js
index 71c8ebd92b8..c185a8e9a07 100644
--- a/js/medicine/surgery/genitials/maleToFemale.js
+++ b/js/medicine/surgery/genitials/maleToFemale.js
@@ -30,7 +30,7 @@ App.Medicine.Surgery.Reactions.MaletoFemale = class extends App.Medicine.Surgery
 			reaction.trust -= 20;
 			reaction.devotion -= 20;
 		}
-		if ((slave.assignment === "get milked" || slave.assignment === "work in the dairy") && slave.lactation === 0) {
+		if ((slave.assignment === Job.MILKED || slave.assignment === Job.DAIRY) && slave.lactation === 0) {
 			r.push(`<span class="job change">${His} assignment has defaulted to rest.</span>`);
 			reaction.shortReaction.push(`<span class="job change">${His} assignment has defaulted to rest.</span>`);
 			removeJob(slave, slave.assignment);
diff --git a/js/medicine/surgery/nipples/endLactation.js b/js/medicine/surgery/nipples/endLactation.js
index f294ae085f8..1f2a974aabf 100644
--- a/js/medicine/surgery/nipples/endLactation.js
+++ b/js/medicine/surgery/nipples/endLactation.js
@@ -6,7 +6,7 @@ App.Medicine.Surgery.Reactions.EndLactation = class extends App.Medicine.Surgery
 
 		r.push(`${He} notices almost immediately that the soreness that used to tell ${him} ${he} needed to be milked has gone. ${He} bounces ${his} breasts idly; it looks like ${he} doesn't know what to think about having ${his} lactation dry up. As with all surgery <span class="health dec">${his} health has been slightly affected.</span>`);
 
-		if (slave.assignment === "get milked" || slave.assignment === "work in the dairy") {
+		if (slave.assignment === Job.MILKED || slave.assignment === Job.DAIRY) {
 			r.push(`<span class="job change">${His} assignment has defaulted to rest.</span>`);
 			reaction.shortReaction.push(`<span class="job change">${His} assignment has defaulted to rest.</span>`);
 			removeJob(slave, slave.assignment);
diff --git a/src/descriptions/officeDescription.js b/src/descriptions/officeDescription.js
index 3880380a73b..d735c7cf7cf 100644
--- a/src/descriptions/officeDescription.js
+++ b/src/descriptions/officeDescription.js
@@ -23,7 +23,7 @@ App.Desc.officeDescription = function(lastElement) {
 
 		if (V.clubAdsSpending >= 5000) {
 			r.push(`A corner of your desk is piled with sample merchandise from the campaign promoting your club.`);
-			const clubSlaves = V.slaves.filter(s => s.assignment === "serve in the club");
+			const clubSlaves = V.slaves.filter(s => s.assignment === Job.CLUB);
 			if (clubSlaves.length > 0) {
 				const modeledSlave = clubSlaves.random();
 				const {He, his} = getPronouns(modeledSlave);
@@ -132,7 +132,7 @@ App.Desc.officeDescription = function(lastElement) {
 			} else {
 				r.push(`A corner of your desk is piled with sample merchandise from the campaign promoting ${V.brothelName}.`);
 			}
-			const brothelSlaves = V.slaves.filter(s => s.assignment === "work in the brothel");
+			const brothelSlaves = V.slaves.filter(s => s.assignment === Job.BROTHEL);
 			if (brothelSlaves.length > 0) {
 				const modeledSlave = brothelSlaves.random();
 				const {he, his} = getPronouns(modeledSlave);
diff --git a/src/endWeek/economics/arcmgmt.js b/src/endWeek/economics/arcmgmt.js
index e2e72470016..2c97e12c586 100644
--- a/src/endWeek/economics/arcmgmt.js
+++ b/src/endWeek/economics/arcmgmt.js
@@ -1343,12 +1343,12 @@ App.EndWeek.arcManagement = function() {
 				topClass += V.nicaea.power * 2.5;
 				topClassP *= 1 + V.nicaea.power * 0.005;
 			}
-			if (V.nicaea.assignment === "whore") {
+			if (V.nicaea.assignment === Job.WHORE) {
 				upperClass += V.nicaea.power * 6.75;
 				upperClassP *= 1 + V.nicaea.power * 0.0025;
 				topClass += V.nicaea.power * 1.25;
 				topClassP *= 1 + V.nicaea.power * 0.0025;
-			} else if (V.nicaea.assignment === "serve the public") {
+			} else if (V.nicaea.assignment === Job.PUBLIC) {
 				lowerClass += V.nicaea.power * 50;
 				lowerClassP *= 1 + V.nicaea.power * 0.0025;
 				middleClass += V.nicaea.power * 20;
diff --git a/src/endWeek/economics/neighborsDevelopment.js b/src/endWeek/economics/neighborsDevelopment.js
index 3c9c401295e..6a8f16d9e02 100644
--- a/src/endWeek/economics/neighborsDevelopment.js
+++ b/src/endWeek/economics/neighborsDevelopment.js
@@ -94,7 +94,7 @@ App.EndWeek.neighborsDevelopment = function() {
 				const {his} = getPronouns(agent);
 				r.push(`<span class="deeppink">${agent.slaveName}</span> manages to escape with the help of a few loyal citizens and returns to you <span class="gold">fearing your displeasure at ${his} failure.</span>`);
 				agent.trust -= 40;
-				assignJob(agent, "rest"); // this takes care of necessary cleanup for agent and agent companion (if any)
+				assignJob(agent, Job.REST); // this takes care of necessary cleanup for agent and agent companion (if any)
 			}
 			r.push(`A controlling interest has been taken by a single individual, leaving the arcology ruled like yours is.`);
 			arc.government = "an individual";
@@ -2077,7 +2077,7 @@ App.EndWeek.neighborsDevelopment = function() {
 					return;
 				}
 				if (validFSes.includes("FSIncestFetishist")) {
-					const lover = V.slaves.find(s => (s.ID === leader.relationshipTarget && areRelated(s, leader) && s.assignment === "live with your agent"));
+					const lover = V.slaves.find(s => (s.ID === leader.relationshipTarget && areRelated(s, leader) && s.assignment === Job.AGENTPARTNER));
 					if ((leader.behavioralQuirk === "sinful" || leader.sexualQuirk === "perverted") && lover && V.seeIncest === 1) {
 						r.push(`Your agent <span class="pink">${leader.slaveName}</span> successfully pushes it to <span class="yellow">adopt Incest Festishism,</span> to share the love and joy ${he} holds with ${his} ${relativeTerm(leader, lover)}.`);
 						arc.FSIncestFetishist = 5;
diff --git a/src/endWeek/economics/personalNotes.js b/src/endWeek/economics/personalNotes.js
index cfe1d1cf055..608ac9ccb2f 100644
--- a/src/endWeek/economics/personalNotes.js
+++ b/src/endWeek/economics/personalNotes.js
@@ -445,13 +445,13 @@ App.EndWeek.personalNotes = function() {
 								if (V.PC.pregControl === "slow gestation") {
 									burstChance -= 20;
 								}
-								if (V.PC.assignment === "get treatment in the clinic") {
+								if (V.PC.assignment === Job.CLINIC) {
 									if (S.Nurse) {
 										burstChance -= 100;
 									} else {
 										burstChance -= 30;
 									}
-								} else if (V.PC.assignment === "work in the dairy" && V.dairyPregSetting === 3) {
+								} else if (V.PC.assignment === Job.DAIRY && V.dairyPregSetting === 3) {
 									burstChance -= 250;
 								}
 								if (V.PC.pregControl === "speed up") {
diff --git a/src/endWeek/events/death.js b/src/endWeek/events/death.js
index af9ed44407a..d53393b3128 100644
--- a/src/endWeek/events/death.js
+++ b/src/endWeek/events/death.js
@@ -58,7 +58,7 @@ App.Events.SEDeath = class SEDeath extends App.Events.BaseEvent {
 
 			switch (deathType) {
 				case "oldAge": {
-					if (slave.assignment === "be confined in the arcade") {
+					if (slave.assignment === Job.ARCADE) {
 						r.push(`You are notified by ${V.arcadeName} staff that one of the cabinets has broken down and will need to be replaced. It would seem <span class="pink bold">${slave.slaveName},</span> the fucktoy encased in it, died`);
 						if (slave.physicalAge >= 70) {
 							r.push(`naturally of old age despite`);
@@ -66,7 +66,7 @@ App.Events.SEDeath = class SEDeath extends App.Events.BaseEvent {
 							r.push(`suddenly, unrelated to`);
 						}
 						r.push(`${his} living conditions. ${He} was a good unit; logs show ${he} was taking dick up until the very end.`);
-					} else if (slave.assignment === "work in the dairy" && V.dairyRestraintsSetting > 1) {
+					} else if (slave.assignment === Job.DAIRY && V.dairyRestraintsSetting > 1) {
 						r.push(`You are notified by ${V.dairyName} staff that one of the occupied milkers has ceased producing. Upon inspection, it would seem <span class="pink bold">${slave.slaveName},</span> the cow restrained in it, died`);
 						if (slave.physicalAge >= 70) {
 							r.push(`naturally of old age despite`);
@@ -119,9 +119,9 @@ App.Events.SEDeath = class SEDeath extends App.Events.BaseEvent {
 				}
 
 				case "overdosed": {
-					if (slave.assignment === "be confined in the arcade") {
+					if (slave.assignment === Job.ARCADE) {
 						r.push(`You are notified by ${V.arcadeName} staff that one of the cabinets has broken down and will need to be replaced. It would seem <span class="pink bold">${slave.slaveName},</span> the fucktoy encased in it, died of an aphrodisiac overdose from the constant aphrodisiac injections. ${He} was a good unit; logs show ${he} was taking dick up until the very end.`);
-					} else if (slave.assignment === "work in the dairy" && V.dairyRestraintsSetting > 1) {
+					} else if (slave.assignment === Job.DAIRY && V.dairyRestraintsSetting > 1) {
 						r.push(`You are notified by ${V.dairyName} staff that one of the occupied milkers has ceased producing. Upon inspection, it would seem <span class="pink bold">${slave.slaveName},</span> the cow restrained in it, died of an aphrodisiac overdose. How ${he} managed to get them is unknown, but ${he} was a good cow; ${he} gave milk up until ${his} death.`);
 					} else if (slave.fuckdoll > 0) {
 						r.push(`One of your Fuckdolls' monitoring systems alerts you that the slave contained within has died. It would seem <span class="pink bold">${slave.slaveName}</span> has died of an aphrodisiac overdose. Thankfully the suit notifies its owner of such things; especially with the rumors of earlier models and necrophilia you hear occasionally. It does little to deal with the resulting mess of the orgasm ${he} died during, however.`);
@@ -148,9 +148,9 @@ App.Events.SEDeath = class SEDeath extends App.Events.BaseEvent {
 				}
 
 				case "lowHealth": {
-					if (slave.assignment === "be confined in the arcade") {
+					if (slave.assignment === Job.ARCADE) {
 						r.push(`You are notified by ${V.arcadeName} staff that one of the cabinets has broken down and will need to be replaced. It would seem <span class="pink bold">${slave.slaveName},</span> the fucktoy encased in it, died to poor health caused by ${his} living conditions. ${He} was a good unit; logs show ${he} was taking dick up until the very end.`);
-					} else if (slave.assignment === "work in the dairy" && V.dairyRestraintsSetting > 1) {
+					} else if (slave.assignment === Job.DAIRY && V.dairyRestraintsSetting > 1) {
 						r.push(`You are notified by ${V.dairyName} staff that one of the occupied milkers has ceased producing. Upon inspection, it would seem <span class="pink bold">${slave.slaveName},</span> the cow restrained in it, died to poor health caused by ${his} living conditions. ${He} was a good cow; ${he} gave milk up until ${his} death.`);
 					} else if (slave.fuckdoll > 0) {
 						r.push(`One of your Fuckdolls' monitoring systems alerts you that the slave contained within has died. It would seem <span class="pink bold">${slave.slaveName}</span> has died of general poor health. Thankfully the suit notifies its owner of such things; especially with the rumors of earlier models and necrophilia you hear occasionally. Clean up is easy enough, however.`);
diff --git a/src/endWeek/nextWeek/nextWeek.js b/src/endWeek/nextWeek/nextWeek.js
index 4688cc0b74b..a3901eff9af 100644
--- a/src/endWeek/nextWeek/nextWeek.js
+++ b/src/endWeek/nextWeek/nextWeek.js
@@ -263,7 +263,7 @@ App.EndWeek.nextWeek = function() {
 		slave.intelligenceImplant = Math.clamp(slave.intelligenceImplant.toFixed(1), -15, 30);
 		slave.prematureBirth = 0;
 		if (V.HGSuiteEquality === 1 && V.HeadGirlID !== 0 && slave.devotion > 50) {
-			if (slave.assignment === "live with your Head Girl") {
+			if (slave.assignment === Job.HEADGIRLSUITE) {
 				newHG = slave.ID;
 			} else if (slave.ID === V.HeadGirlID) {
 				oldHG = slave.ID;
@@ -275,10 +275,8 @@ App.EndWeek.nextWeek = function() {
 			V.averageDevotion += slave.devotion;
 			slavesContributing++;
 		} else if (
-			slave.assignment !== "be confined in the cellblock" &&
-			slave.assignment !== "be confined in the arcade" &&
-			(slave.assignment !== "work in the dairy" || V.dairyRestraintsSetting < 2) &&
-			slave.assignment !== "labor in the production line"
+			![Job.CELLBLOCK, Job.ARCADE, Job.BABY_FACTORY].includes(slave.assignment) &&
+			(slave.assignment !== Job.DAIRY || V.dairyRestraintsSetting < 2)
 		) {
 			V.averageTrust += slave.trust * 0.5;
 			V.averageDevotion += slave.devotion * 0.5;
diff --git a/src/endWeek/reports/clinicReport.js b/src/endWeek/reports/clinicReport.js
index 372ece308e4..9d559ae2137 100644
--- a/src/endWeek/reports/clinicReport.js
+++ b/src/endWeek/reports/clinicReport.js
@@ -378,8 +378,8 @@ App.EndWeek.clinicReport = function() {
 				assignJobSafely(slave, oldJob);
 				if (slave.choosesOwnAssignment === 1) {
 					r.push(`and ${he} is resting before choosing another task.`);
-				} else if (slave.assignment === "rest") {
-					if (oldJob !== "rest") {
+				} else if (slave.assignment === Job.REST) {
+					if (oldJob !== Job.REST) {
 						r.push(`and since ${he} was unable to return to ${his} old task to ${oldJob}, ${his} assignment has defaulted to rest.`);
 					} else {
 						r.push(`so ${he} has returned to rest.`);
diff --git a/src/endWeek/reports/penthouseReport.js b/src/endWeek/reports/penthouseReport.js
index 33a654b7649..61def6f566f 100644
--- a/src/endWeek/reports/penthouseReport.js
+++ b/src/endWeek/reports/penthouseReport.js
@@ -28,16 +28,16 @@ App.EndWeek.penthouseReport = function() {
 		if (slave.ID === V.HeadGirlID && hgSlave) {
 			/* Output the HG's slave immediately after the hg */
 			const {He2, he2} = getPronouns(hgSlave).appendSuffix("2");
-			const hgSlaveEntry = App.UI.DOM.appendNewElement("div", el, '', "slave-report");
+			const hgSlaveEntry = App.UI.DOM.appendNewElement("div", el, '', ["slave-report"]);
 			if (hgSlave.assignment !== Job.HEADGIRLSUITE) {
-				App.UI.DOM.appendNewElement("span", hgSlaveEntry, `${hgSlave.slaveName} had been assigned to live with your Head Girl, but this week ${he2} was assigned to ${hgSlave.assignment}. ${He2} has been released to your penthouse for reassignment.`, "warning");
+				App.UI.DOM.appendNewElement("span", hgSlaveEntry, `${hgSlave.slaveName} had been assigned to live with your Head Girl, but this week ${he2} was assigned to ${hgSlave.assignment}. ${He2} has been released to your penthouse for reassignment.`, ["warning"]);
 				removeJob(hgSlave, Job.HEADGIRLSUITE);
 			} else {
 				if (penthouseArtRenderer) {
 					App.UI.DOM.drawOneSlaveRight(hgSlaveEntry, hgSlave, penthouseArtRenderer);
 				}
 				App.SlaveAssignment.appendSlaveLinks(hgSlaveEntry, hgSlave);
-				App.UI.DOM.appendNewElement("span", hgSlaveEntry, SlaveFullName(hgSlave), "slave-name");
+				App.UI.DOM.appendNewElement("span", hgSlaveEntry, SlaveFullName(hgSlave), ["slave-name"]);
 				if (hgSlave.choosesOwnAssignment === 2) {
 					hgSlaveEntry.append(App.SlaveAssignment.choosesOwnJob(hgSlave), ` ${He2}`);
 				}
@@ -66,51 +66,51 @@ App.EndWeek.penthouseReport = function() {
 		let r = [];
 		let milkResults;
 
-		r.push(App.UI.DOM.makeElement("span", SlaveFullName(slave), "slave-name"));
+		r.push(App.UI.DOM.makeElement("span", SlaveFullName(slave), ["slave-name"]));
 		if (slave.choosesOwnAssignment === 2) {
 			r.push(App.SlaveAssignment.choosesOwnJob(slave));
 			r.push(He);
 		}
 
 		switch (slave.assignment) {
-			case "rest":
+			case Job.REST:
 				r.push(App.SlaveAssignment.rest(slave));
 				break;
-			case "whore":
+			case Job.WHORE:
 				r.push(App.SlaveAssignment.whore(slave));
 				break;
-			case "serve the public":
+			case Job.PUBLIC:
 				r.push(App.SlaveAssignment.serveThePublic(slave));
 				break;
-			case "work a glory hole":
+			case Job.GLORYHOLE:
 				r.push(App.SlaveAssignment.workAGloryHole(slave));
 				break;
-			case "get milked":
+			case Job.MILKED:
 				milkResults = App.SlaveAssignment.getMilked(slave);
 				r.push(milkResults.text);
 				break;
-			case "take classes":
+			case Job.CLASSES:
 				r.push(App.SlaveAssignment.takeClasses(slave));
 				break;
-			case "please you":
+			case Job.FUCKTOY:
 				r.push(App.SlaveAssignment.pleaseYou(slave));
 				break;
-			case "be a subordinate slave":
+			case Job.SUBORDINATE:
 				r.push(App.SlaveAssignment.serveYourOtherSlaves(slave));
 				break;
-			case "be a servant":
+			case Job.HOUSE:
 				r.push(App.SlaveAssignment.servant(slave));
 				break;
-			case "stay confined":
+			case Job.CONFINEMENT:
 				r.push(App.SlaveAssignment.stayConfined(slave).text);
 				break;
-			case "guard you":
+			case Job.BODYGUARD:
 				r.push(App.SlaveAssignment.guardYou(slave));
 				break;
-			case "be your Head Girl":
+			case Job.HEADGIRL:
 				r.push(App.SlaveAssignment.beYourHeadGirl(slave));
 				break;
-			case "recruit girls":
+			case Job.RECRUITER:
 				r.push(App.SlaveAssignment.recruitGirls(slave));
 				break;
 			default:
@@ -118,7 +118,7 @@ App.EndWeek.penthouseReport = function() {
 				r.push(App.SlaveAssignment.rest(slave));
 		}
 
-		if (V.servantMilkers === 1 && slave.lactation > 0 && slave.assignment !== "get milked") {
+		if (V.servantMilkers === 1 && slave.lactation > 0 && slave.assignment !== Job.MILKED) {
 			r.push(`${His} assignment`);
 			if (App.Data.misc.servantMilkersJobs.includes(slave.assignment)) {
 				r.push(`is not strenuous, so ${he}`);
diff --git a/src/endWeek/reports/schoolroomReport.js b/src/endWeek/reports/schoolroomReport.js
index 5c64a0174d5..dc32b6e563a 100644
--- a/src/endWeek/reports/schoolroomReport.js
+++ b/src/endWeek/reports/schoolroomReport.js
@@ -204,8 +204,8 @@ App.EndWeek.schoolroomReport = function() {
 				assignJobSafely(slave, oldJob);
 				if (slave.choosesOwnAssignment === 1) {
 					r.push(`and ${he} is resting before choosing another task.`);
-				} else if (slave.assignment === "rest") {
-					if (oldJob !== "rest") {
+				} else if (slave.assignment === Job.REST) {
+					if (oldJob !== Job.REST) {
 						r.push(`and since ${he} was unable to return to ${his} old task to ${oldJob}, ${his} assignment has defaulted to rest.`);
 					} else {
 						r.push(`so ${he} has returned to rest.`);
diff --git a/src/endWeek/reports/spaReport.js b/src/endWeek/reports/spaReport.js
index bdb0208d91d..78c93a24f1a 100644
--- a/src/endWeek/reports/spaReport.js
+++ b/src/endWeek/reports/spaReport.js
@@ -354,8 +354,8 @@ App.EndWeek.spaReport = function() {
 				assignJobSafely(slave, oldJob);
 				if (slave.choosesOwnAssignment === 1) {
 					r.push(`and ${he} is resting before choosing another task.`);
-				} else if (slave.assignment === "rest") {
-					if (oldJob !== "rest") {
+				} else if (slave.assignment === Job.REST) {
+					if (oldJob !== Job.REST) {
 						r.push(`and since ${he} was unable to return to ${his} old task to ${oldJob}, ${his} assignment has defaulted to rest.`);
 					} else {
 						r.push(`so ${he} has returned to rest.`);
diff --git a/src/endWeek/saLongTermEffects.js b/src/endWeek/saLongTermEffects.js
index 04b70afe184..cdcb493e961 100644
--- a/src/endWeek/saLongTermEffects.js
+++ b/src/endWeek/saLongTermEffects.js
@@ -17,7 +17,7 @@ App.SlaveAssignment.longTermEffects = function saLongTermEffects(slave) {
 	if (slave.fuckdoll > 0) {
 		fuckdollConversion(slave);
 	}
-	if (assignmentVisible(slave) && (slave.assignment !== "live with your Head Girl" || V.HGSuiteSurgery === 0)) {
+	if (assignmentVisible(slave) && (slave.assignment !== Job.HEADGIRLSUITE || V.HGSuiteSurgery === 0)) {
 		if (hasSurgeryRule(slave, V.defaultRules) && slave.useRulesAssistant === 1 && slave.indentureRestrictions < 2 && V.cash > 0) {
 			r.push(rulesAutosurgery(slave));
 		}
@@ -2274,7 +2274,7 @@ App.SlaveAssignment.longTermEffects = function saLongTermEffects(slave) {
 	 *
 	 */
 	function mainLaborTriggers(slave) {
-		if (slave.pregControl !== "labor suppressors" && slave.assignment !== "labor in the production line") {
+		if (slave.pregControl !== "labor suppressors" && slave.assignment !== Job.BABY_FACTORY) {
 			if (slave.broodmother < 1) {
 				if (WombBirthReady(slave, slave.pregData.normalBirth * 1.075) > 0) {
 					// check for really ready fetuses - 43 weeks - max, overdue
@@ -2295,7 +2295,7 @@ App.SlaveAssignment.longTermEffects = function saLongTermEffects(slave) {
 		}
 		if (V.dangerousPregnancy === 1 && !isInLabor(slave)) {
 			let miscarriage = 0;
-			if (((slave.assignment !== "work in the dairy" || V.dairyRestraintsSetting < 2) && slave.pregAdaptation < 500 && slave.broodmother < 1) || (slave.preg > slave.pregData.normalBirth / 2 && slave.womb.find((ft) => ft.genetics.geneticQuirks.polyhydramnios === 2))) {
+			if (((slave.assignment !== Job.DAIRY || V.dairyRestraintsSetting < 2) && slave.pregAdaptation < 500 && slave.broodmother < 1) || (slave.preg > slave.pregData.normalBirth / 2 && slave.womb.find((ft) => ft.genetics.geneticQuirks.polyhydramnios === 2))) {
 				let miscarriageChance = -10;
 				miscarriageChance += ((slave.bellyPreg / 1000) - slave.pregAdaptation);
 				// this could use to not be linear
@@ -2314,13 +2314,13 @@ App.SlaveAssignment.longTermEffects = function saLongTermEffects(slave) {
 				if (slave.weight < -50) {
 					miscarriageChance -= slave.weight;
 				}
-				if (V.masterSuitePregnancySlaveLuxuries === 1 && (slave.assignment === "serve in the master suite" || slave.assignment === "be your Concubine")) {
+				if (V.masterSuitePregnancySlaveLuxuries === 1 && (slave.assignment === Job.MASTERSUITE || slave.assignment === Job.CONCUBINE)) {
 					miscarriageChance -= 300;
-				} else if (slave.assignment === "rest") {
+				} else if (slave.assignment === Job.REST) {
 					miscarriageChance -= 100;
-				} else if (slave.assignment === "rest in the spa") {
+				} else if (slave.assignment === Job.SPA) {
 					miscarriageChance -= 50;
-				} else if (slave.assignment === "get treatment in the clinic") {
+				} else if (slave.assignment === Job.CLINIC) {
 					if (S.Nurse) {
 						miscarriageChance -= 200;
 					} else {
@@ -2478,13 +2478,13 @@ App.SlaveAssignment.longTermEffects = function saLongTermEffects(slave) {
 							if (slave.pregControl === "slow gestation") {
 								burstChance -= 20;
 							}
-							if (slave.assignment === "get treatment in the clinic") {
+							if (slave.assignment === Job.CLINIC) {
 								if (S.Nurse) {
 									burstChance -= 100;
 								} else {
 									burstChance -= 30;
 								}
-							} else if (slave.assignment === "work in the dairy" && V.dairyPregSetting === 3) {
+							} else if (slave.assignment === Job.DAIRY && V.dairyPregSetting === 3) {
 								burstChance -= 250;
 							}
 							if (slave.pregControl === "speed up") {
@@ -2520,7 +2520,7 @@ App.SlaveAssignment.longTermEffects = function saLongTermEffects(slave) {
 		if (burstCheck(slave)) {
 			// already scheduled for a different kind of death
 		} else {
-			if (slave.health.health <= -90 && slave.assignment !== "get treatment in the clinic") {
+			if (slave.health.health <= -90 && slave.assignment !== Job.CLINIC) {
 				deathSeed = (slave.health.health - slave.physicalAge - (slave.chem * 2) - (slave.addict * 2));
 				if (slave.weight < -50 || slave.weight > 95) {
 					deathSeed -= 100;
diff --git a/src/endWeek/saLongTermMentalEffects.js b/src/endWeek/saLongTermMentalEffects.js
index 82923894e54..7e5df5ac31a 100644
--- a/src/endWeek/saLongTermMentalEffects.js
+++ b/src/endWeek/saLongTermMentalEffects.js
@@ -1264,7 +1264,7 @@ App.SlaveAssignment.longTermMentalEffects = function saLongTermMentalEffects(sla
 				} else if (V.feeder !== 0) {
 					r.push(`${His} paraphilia is satisfied by the way ${he} gets to eat.`);
 					slave.paraphiliaSatisfied = 1;
-				} else if (slave.assignment === "work in the dairy" && V.dairyFeedersSetting > 0) {
+				} else if (slave.assignment === Job.DAIRY && V.dairyFeedersSetting > 0) {
 					// something involving cum production
 				} else {
 					r.push(`${He} doesn't seem to feel ${he}'s getting enough cum, leaving the cum addict <span class="devotion dec">depressed and anxious.</span>`);
@@ -1301,7 +1301,7 @@ App.SlaveAssignment.longTermMentalEffects = function saLongTermMentalEffects(sla
 				} else if (plugWidth(slave) > 2) {
 					r.push(`${His} paraphilia is satisfied by the enormous plug ${he} wears in ${his} ass.`);
 					slave.paraphiliaSatisfied = 1;
-				} else if (slave.assignment === "work in the dairy" && V.dairyStimulatorsSetting > 0) {
+				} else if (slave.assignment === Job.DAIRY && V.dairyStimulatorsSetting > 0) {
 					// major ass drilling
 				} else {
 					r.push(`${He} doesn't seem to feel ${he}'s getting buttfucked often enough, leaving the anal addict <span class="devotion dec">depressed and anxious.</span>`);
@@ -1341,10 +1341,10 @@ App.SlaveAssignment.longTermMentalEffects = function saLongTermMentalEffects(sla
 				} else if (["whore", "serve the public", "work in the brothel", "serve in the club", "be the DJ"].includes(slave.assignment)) {
 					r.push(`${His} paraphilia is satisfied by how often ${he} gets publicly fucked at work.`);
 					slave.paraphiliaSatisfied = 1;
-				} else if (slave.assignment === "recruit girls" && V.recruiterTarget === "other arcologies" && V.arcologies[0].influenceTarget !== -1) {
+				} else if (slave.assignment === Job.RECRUITER && V.recruiterTarget === "other arcologies" && V.arcologies[0].influenceTarget !== -1) {
 					r.push(`${His} paraphilia is satisfied by the sheer amount of attention ${he} gets as a sexual Ambassador.`);
 					slave.paraphiliaSatisfied = 1;
-				} else if (slave.assignment === "be the Schoolteacher" && V.schoolroom >= 20) {
+				} else if (slave.assignment === Job.TEACHER && V.schoolroom >= 20) {
 					r.push(`${His} paraphilia is satisfied by ${his} work as a sexual instructor; enough eyes are fixated on ${his} lessons.`);
 					slave.paraphiliaSatisfied = 1;
 				} else if (App.Data.clothes.get(slave.clothes).exposure >= 4) {
@@ -1425,16 +1425,16 @@ App.SlaveAssignment.longTermMentalEffects = function saLongTermMentalEffects(sla
 						slave.devotion -= 3;
 					}
 				}
-				if (slave.assignment === "be your Head Girl") {
+				if (slave.assignment === Job.HEADGIRL) {
 					r.push(`${His} paraphilia is satisfied by ${his} work as your Head Girl.`);
 					slave.paraphiliaSatisfied = 1;
-				} else if (slave.assignment === "be the Wardeness") {
+				} else if (slave.assignment === Job.WARDEN) {
 					r.push(`${His} paraphilia is satisfied by ${his} work as your Wardeness.`);
 					slave.paraphiliaSatisfied = 1;
-				} else if (slave.assignment === "be the Stewardess") {
+				} else if (slave.assignment === Job.STEWARD) {
 					r.push(`${His} paraphilia is satisfied by ${his} work as the Stewardess.`);
 					slave.paraphiliaSatisfied = 1;
-				} else if (slave.assignment === "be the Schoolteacher") {
+				} else if (slave.assignment === Job.TEACHER) {
 					r.push(`${His} paraphilia is satisfied by ${his} work as the Schoolteacher.`);
 					slave.paraphiliaSatisfied = 1;
 				} else if (canMove(slave) && (slave.rules.release.slaves === 1 || App.Utils.hasFamilySex(slave)) && V.universalRulesConsent === 0) {
@@ -1463,10 +1463,10 @@ App.SlaveAssignment.longTermMentalEffects = function saLongTermMentalEffects(sla
 						slave.devotion -= 3;
 					}
 				}
-				if (slave.assignment === "be your Head Girl") {
+				if (slave.assignment === Job.HEADGIRL) {
 					r.push(`${His} paraphilia is satisfied by ${his} work as your Head Girl.`);
 					slave.paraphiliaSatisfied = 1;
-				} else if (slave.assignment === "be the Wardeness") {
+				} else if (slave.assignment === Job.WARDEN) {
 					r.push(`${His} paraphilia is satisfied by ${his} work as your Wardeness.`);
 					slave.paraphiliaSatisfied = 1;
 				} else if (canMove(slave) && (slave.rules.release.slaves === 1 || App.Utils.hasFamilySex(slave)) && V.universalRulesConsent === 0) {
@@ -1495,8 +1495,8 @@ App.SlaveAssignment.longTermMentalEffects = function saLongTermMentalEffects(sla
 						slave.devotion -= 3;
 					}
 				}
-				const dom = (slave.assignment === "be a subordinate slave" && slave.subTarget > 0) ? getSlave(slave.subTarget) : null;
-				if (slave.assignment === "work in the dairy" && V.dairyRestraintsSetting >= 2) {
+				const dom = (slave.assignment === Job.SUBORDINATE && slave.subTarget > 0) ? getSlave(slave.subTarget) : null;
+				if (slave.assignment === Job.DAIRY && V.dairyRestraintsSetting >= 2) {
 					r.push(`${His} paraphilia is satisfied by ${his} horrible life as a producer of useful fluids and a receptacle for machine rape.`);
 					slave.paraphiliaSatisfied = 1;
 				} else if (["be confined in the arcade", "work a glory hole"].includes(slave.assignment)) {
@@ -1538,7 +1538,7 @@ App.SlaveAssignment.longTermMentalEffects = function saLongTermMentalEffects(sla
 				} else if (["be your Concubine", "please you", "serve in the master suite"].includes(slave.assignment)) {
 					r.push(`${His} paraphilia is satisfied by how ${he}'s expected to serve your sexual needs at work.`);
 					slave.paraphiliaSatisfied = 1;
-				} else if (slave.assignment === "be a subordinate slave") {
+				} else if (slave.assignment === Job.SUBORDINATE) {
 					r.push(`${His} paraphilia is satisfied by how ${he}'s expected to serve other slaves' sexual needs.`);
 					slave.paraphiliaSatisfied = 1;
 				} else {
@@ -1728,7 +1728,7 @@ App.SlaveAssignment.longTermMentalEffects = function saLongTermMentalEffects(sla
 				}
 				break;
 			case "a bioreactor":
-				if (V.dairyRestraintsSetting < 2 || slave.assignment !== "work in the dairy" && slave.assignment !== "get milked") {
+				if (V.dairyRestraintsSetting < 2 || slave.assignment !== Job.DAIRY && slave.assignment !== Job.MILKED) {
 					r.push(`${He} remembers what it was like to be a living, breathing, milk-jetting,`);
 					if (isFertile(slave) && (V.dairyPregUpgrade > 0)) {
 						r.push(`baby-filled,`);
@@ -1743,7 +1743,7 @@ App.SlaveAssignment.longTermMentalEffects = function saLongTermMentalEffects(sla
 				break;
 			case "a Futanari Sister":
 				if (V.masterSuiteUpgradeLuxury === 2) {
-					if (slave.assignment === "serve in the master suite") {
+					if (slave.assignment === Job.MASTERSUITE) {
 						r.push(`As a former Futanari Sister, the fuckpit in ${V.masterSuiteName} feels like home to ${him}, and ${he} has <span class="trust inc">no desire to ever leave.</span>`);
 						slave.trust += 1;
 					} else {
@@ -1789,7 +1789,7 @@ App.SlaveAssignment.longTermMentalEffects = function saLongTermMentalEffects(sla
 	 *
 	 */
 	function organicFetishDevelopments(slave) {
-		if (slave.assignment === "get milked" || slave.assignment === "work in the dairy") {
+		if (slave.assignment === Job.MILKED || slave.assignment === Job.DAIRY) {
 			if (slave.lactation > 0) {
 				if (slave.fetishStrength <= 95) {
 					if (slave.fetish !== "boobs") {
@@ -1868,7 +1868,7 @@ App.SlaveAssignment.longTermMentalEffects = function saLongTermMentalEffects(sla
 				if (slave.vagina > -1 && !canDoVaginal(slave)) {
 					if (slave.fetishStrength <= 95) {
 						if (fetishChangeChance(slave) > random(0, 100)) {
-							if (slave.assignment === "serve the public" || slave.assignment === "serve in the club") {
+							if (slave.assignment === Job.PUBLIC || slave.assignment === Job.CLUB) {
 								if (slave.fetish !== "buttslut") {
 									r.push(`With so much sexual attention focused on ${his} anus, <span class="fetish gain">${he} comes to view buttsex as the centerpiece of ${his} sexuality.</span>`);
 									slave.fetish = "buttslut";
@@ -1880,7 +1880,7 @@ App.SlaveAssignment.longTermMentalEffects = function saLongTermMentalEffects(sla
 									}
 									slave.fetishStrength += 4;
 								}
-							} else if (slave.assignment === "whore" || slave.assignment === "work in the brothel") {
+							} else if (slave.assignment === Job.WHORE || slave.assignment === Job.BROTHEL) {
 								if (slave.fetish !== "buttslut") {
 									r.push(`With ${his} anus constantly sold for use, <span class="fetish gain">${he} comes to view buttsex as the centerpiece of ${his} sexuality.</span>`);
 									slave.fetish = "buttslut";
@@ -1899,7 +1899,7 @@ App.SlaveAssignment.longTermMentalEffects = function saLongTermMentalEffects(sla
 					if (slave.prostate !== 0) {
 						if (slave.fetishStrength <= 95) {
 							if (fetishChangeChance(slave) > random(0, 90)) {
-								if (slave.assignment === "serve the public" || slave.assignment === "serve in the club") {
+								if (slave.assignment === Job.PUBLIC || slave.assignment === Job.CLUB) {
 									if (slave.fetish !== "buttslut") {
 										r.push(`Since most of ${his} orgasms are caused by prostate stimulation from anal sex with citizens, <span class="fetish gain">${he} comes to view ${his} asshole as ${his} primary sexual organ.</span>`);
 										slave.fetish = "buttslut";
@@ -1911,7 +1911,7 @@ App.SlaveAssignment.longTermMentalEffects = function saLongTermMentalEffects(sla
 										}
 										slave.fetishStrength += 4;
 									}
-								} else if (slave.assignment === "whore" || slave.assignment === "work in the brothel") {
+								} else if (slave.assignment === Job.WHORE || slave.assignment === Job.BROTHEL) {
 									if (slave.fetish !== "buttslut") {
 										r.push(`Since most of ${his} orgasms are caused by prostate stimulation from anal sex with customers, <span class="fetish gain">${he} comes to view ${his} asshole as ${his} primary sexual organ.</span>`);
 										slave.fetish = "buttslut";
@@ -2138,7 +2138,7 @@ App.SlaveAssignment.longTermMentalEffects = function saLongTermMentalEffects(sla
 							slave.sexualFlaw = "self hating";
 							slave.fetishStrength = 100;
 							FSApproves = 1;
-						} else if (slave.assignment === "work in the dairy" && V.dairyRestraintsSetting >= 2) {
+						} else if (slave.assignment === Job.DAIRY && V.dairyRestraintsSetting >= 2) {
 							r.push(`Strapped into a milking machine's tender, penetrative embrace, ${his} masochistic tendencies darken into sexual appreciation for ${his} life as a human factory. <span class="paraphilia gain">${He}'s descended into true self hatred.</span>`);
 							slave.sexualFlaw = "self hating";
 							slave.fetishStrength = 100;
@@ -2185,7 +2185,7 @@ App.SlaveAssignment.longTermMentalEffects = function saLongTermMentalEffects(sla
 							slave.sexualFlaw = "breeder";
 							slave.fetishStrength = 100;
 							FSApproves = 1;
-						} else if (slave.assignment === "work in the dairy" && V.dairyPregSetting >= 2 && slave.pregKnown === 1) {
+						} else if (slave.assignment === Job.DAIRY && V.dairyPregSetting >= 2 && slave.pregKnown === 1) {
 							r.push(`With ${his} womanhood fucked full of cum and fertility drugs, ${his} pregnancy fetish deepens into true perversity. <span class="paraphilia gain">${He}'s become obsessed with breeding.</span>`);
 							slave.sexualFlaw = "breeder";
 							slave.fetishStrength = 100;
diff --git a/src/endWeek/saLongTermPhysicalEffects.js b/src/endWeek/saLongTermPhysicalEffects.js
index 2b9573d40a7..cb0d9548ccf 100644
--- a/src/endWeek/saLongTermPhysicalEffects.js
+++ b/src/endWeek/saLongTermPhysicalEffects.js
@@ -216,8 +216,8 @@ App.SlaveAssignment.longTermPhysicalEffects = function saLongTermPhysicalEffects
 	 */
 	function holeRelaxation(slave) {
 		if (!["be confined in the arcade", "serve in the club", "serve the public", "whore", "work a glory hole", "work in the brothel"].includes(slave.assignment)) {
-			if (slave.assignment !== "serve in the master suite" || V.masterSuiteUpgradeLuxury < 2) {
-				if (slave.assignment !== "work in the dairy" || V.dairyStimulatorsSetting === 0) {
+			if (slave.assignment !== Job.MASTERSUITE || V.masterSuiteUpgradeLuxury < 2) {
+				if (slave.assignment !== Job.DAIRY || V.dairyStimulatorsSetting === 0) {
 					if (slave.geneMods.rapidCellGrowth !== 1) {
 						if (slave.vagina >= 3 && dildoWidth(slave) < 2) {
 							r.push(`With a rest from strenuous use, <span class="improvement">${his} loose vagina recovers a little.</span>`);
@@ -1067,7 +1067,7 @@ App.SlaveAssignment.longTermPhysicalEffects = function saLongTermPhysicalEffects
 				}
 			}
 			if (slave.lactationDuration === 0) {
-				if (S.Wardeness !== null && slave.assignment === "be confined in the cellblock" && (S.Wardeness.sexualFlaw === "malicious" || S.Wardeness.sexualFlaw === "abusive" || S.Wardeness.sexualFlaw === "breast growth")) {
+				if (S.Wardeness !== null && slave.assignment === Job.CELLBLOCK && (["malicious", "abusive", "breast growth"].includes(S.Wardeness.sexualFlaw))) {
 					slave.boobs -= slave.boobsMilk;
 					slave.boobsMilk = 0;
 					slave.lactationDuration = 2;
@@ -1156,7 +1156,7 @@ App.SlaveAssignment.longTermPhysicalEffects = function saLongTermPhysicalEffects
 			triggerSize = 30000;
 		}
 		if (boobSize > triggerSize) {
-			if (slave.assignment !== "work in the dairy" || V.dairyRestraintsSetting < 2 || V.arcologies[0].FSAssetExpansionistResearch === 0) {
+			if (slave.assignment !== Job.DAIRY || V.dairyRestraintsSetting < 2 || V.arcologies[0].FSAssetExpansionistResearch === 0) {
 				if (slave.drugs !== "breast injections" && slave.drugs !== "intensive breast injections" && V.arcologies[0].FSAssetExpansionistResearch === 0) {
 					if (slave.bellyPreg < 300000 && slave.hormoneBalance < 300 && gigantomastiaMod !== 3) {
 						if (boobSize < triggerSize * 2) {
@@ -1218,7 +1218,7 @@ App.SlaveAssignment.longTermPhysicalEffects = function saLongTermPhysicalEffects
 			}
 		}
 		/*
-		if (V.masterSuitePregnancySlaveLuxuries === 1 && slave.broodmother === 2 && (slave.assignment === "serve in the master suite" || slave.assignment === "be your Concubine")) {
+		if (V.masterSuitePregnancySlaveLuxuries === 1 && slave.broodmother === 2 && (slave.assignment === Job.MASTERSUITE || slave.assignment === Job.CONCUBINE)) {
 			if (slave.diet !== "high caloric") {
 				if (slave.preg > slave.pregData.normalBirth / 2) {
 					r.push(`The pregnancy generator places heavy strain on ${him} as ${his} body <span class="health dec">consumes itself</span> to keep releasing eggs and maintain ${his} many developing babies.`);
@@ -2352,13 +2352,13 @@ App.SlaveAssignment.longTermPhysicalEffects = function saLongTermPhysicalEffects
 		}
 
 		if (V.seeExtreme === 1 && V.dangerousPregnancy === 1 && ((slave.belly > (slave.pregAdaptation * 3200)) || slave.bellyPreg > 600000) && slave.bellyPreg >= 100000) {
-			if (slave.assignment === "get treatment in the clinic") {
+			if (slave.assignment === Job.CLINIC) {
 				if (S.Nurse) {
 					r.push(`The fast actions of ${V.clinicName}'s nurse, ${S.Nurse.slaveName}, saved ${his} life a few times. <span class="health dec">${His} womb is breaking!</span>`);
 				} else {
 					r.push(`Automatic monitors in ${V.clinicName} detected critical pressure and called junior medical staff. They managed to hold ${him} together, for now; <span class="health dec">${his} womb is breaking!</span>`);
 				}
-			} else if (slave.assignment === "work in the dairy" && V.dairyPregSetting === 3) {
+			} else if (slave.assignment === Job.DAIRY && V.dairyPregSetting === 3) {
 				r.push(`Automatic monitors in ${his} harness detected ${his} womb has reached critical mass and applied a special adaptive belly corset to hold <span class="health dec">${his} breaking womb</span> together.`);
 			}
 		}
diff --git a/src/endWeek/saPregnancy.js b/src/endWeek/saPregnancy.js
index 27fb4cbede5..766ddca086d 100644
--- a/src/endWeek/saPregnancy.js
+++ b/src/endWeek/saPregnancy.js
@@ -414,7 +414,7 @@ App.SlaveAssignment.pregnancy = function saPregnancy(slave) {
 		}
 		switch (slave.pregControl) {
 			case "speed up":
-				if (!S.Nurse || slave.assignment !== "get treatment in the clinic") {
+				if (!S.Nurse || slave.assignment !== Job.CLINIC) {
 					if (slave.pregType >= 20 && slave.devotion <= 20 && slave.trust <= 50) {
 						if (slave.sexualFlaw === "self hating") {
 							r.push(`${He} is <span class="devotion inc">delirious with joy</span> over ${his} straining womb. Every week ${he} gets bigger, fuller and tighter; in ${his} mind, it won't be long until ${he} bursts, bringing ${his} children into the world.`);
@@ -672,7 +672,7 @@ App.SlaveAssignment.pregnancy = function saPregnancy(slave) {
 			const boobSize = slave.boobs - slave.boobsImplant - slave.boobsMilk;
 			const buttSize = slave.butt - slave.buttImplant;
 			const hipSize = slave.hips - slave.hipsImplant;
-			if (slave.pregType >= 30 && (((slave.assignment === "be your Concubine" || slave.assignment === "serve in the master suite") && V.masterSuitePregnancySlaveLuxuries === 1) || slave.diet === "high caloric")) {
+			if (slave.pregType >= 30 && (((slave.assignment === Job.CONCUBINE || slave.assignment === Job.MASTERSUITE) && V.masterSuitePregnancySlaveLuxuries === 1) || slave.diet === "high caloric")) {
 				if (slave.weight <= 65) {
 					r.push(`${He} has <span class="change positive">gained weight</span> in order to better sustain ${himself} and ${his} children.`);
 					slave.weight += 1;
@@ -775,7 +775,7 @@ App.SlaveAssignment.pregnancy = function saPregnancy(slave) {
 		if (isFertile(slave)) {
 			needToBreed(slave);
 		}
-		if (canGetPregnant(slave) && ((slave.assignment === "work in the dairy" && V.dairyPregSetting === 0) || slave.assignment !== "work in the dairy")) {
+		if (canGetPregnant(slave) && ((slave.assignment === Job.DAIRY && V.dairyPregSetting === 0) || slave.assignment !== Job.DAIRY)) {
 			impregnation(slave);
 		}
 		if (slave.ovaImplant === "asexual" && isFertile(slave) && (slave.preg === 0 || (slave.preg >= 0 && slave.geneticQuirks.superfetation === 2))) {
@@ -1621,7 +1621,7 @@ App.SlaveAssignment.pregnancy = function saPregnancy(slave) {
 					if (pcCanKnockUpSlave(slave)) {
 						pcDoKnockUpSlave(slave);
 					} else { // look for a random father among master suite slaves
-						const msSlaves = V.slaves.filter((s) => s.assignment === "serve in the master suite").shuffle();
+						const msSlaves = V.slaves.filter((s) => s.assignment === Job.MASTERSUITE).shuffle();
 						for (const msSlave of msSlaves) {
 							if (canImpreg(slave, msSlave) && App.Utils.sexAllowed(slave, msSlave)) {
 								/* catch for self-impregnation */
diff --git a/src/endWeek/saRules.js b/src/endWeek/saRules.js
index f76ffc75a75..0773271fe34 100644
--- a/src/endWeek/saRules.js
+++ b/src/endWeek/saRules.js
@@ -2570,7 +2570,7 @@ App.SlaveAssignment.rules = function(slave) {
 
 					r.push(App.EndWeek.Rules.speechRules(slave));
 
-					if (slave.assignment !== "be your Head Girl" && slave.assignment !== "guard you") {
+					if (slave.assignment !== Job.HEADGIRL && slave.assignment !== Job.BODYGUARD) {
 						if (V.roomsPopulation > V.rooms) {
 							if (slave.rules.living === "luxurious") {
 								r.push(`There are <span class="yellow">too many slaves for the penthouse's individual rooms,</span> so ${he} moves out into the dormitory.`);
diff --git a/src/events/PESS/pessMadamStrategy.js b/src/events/PESS/pessMadamStrategy.js
index c0a7949c37b..f4565873d12 100644
--- a/src/events/PESS/pessMadamStrategy.js
+++ b/src/events/PESS/pessMadamStrategy.js
@@ -30,7 +30,7 @@ App.Events.pessMadamStrategy = class pessMadamStrategy extends App.Events.BaseEv
 		function review() {
 			S.Madam.devotion += 4;
 			for (const slave of V.slaves) {
-				if (slave.assignment === "work in the brothel") {
+				if (slave.assignment === Job.BROTHEL) {
 					if (slave.skill.oral < 100) {
 						slave.skill.oral += 5;
 					} else if (slave.skill.anal < 100) {
@@ -46,7 +46,7 @@ App.Events.pessMadamStrategy = class pessMadamStrategy extends App.Events.BaseEv
 		function surgery() {
 			S.Madam.devotion += 4;
 			for (const slave of V.slaves) {
-				if (slave.assignment === "work in the brothel") {
+				if (slave.assignment === Job.BROTHEL) {
 					if (slave.boobs < 400) {
 						slave.boobs += 200;
 						slave.boobsImplant += 200;
diff --git a/src/events/PETS/petsNurseMolestation.js b/src/events/PETS/petsNurseMolestation.js
index 18e79ef74d5..65da7408a99 100644
--- a/src/events/PETS/petsNurseMolestation.js
+++ b/src/events/PETS/petsNurseMolestation.js
@@ -71,7 +71,7 @@ App.Events.petsNurseMolestation = class petsNurseMolestation extends App.Events.
 			}
 			actX(S.Nurse, "oral", 20);
 			V.slaves.forEach(function(s) {
-				if (s.assignment === "get treatment in the clinic") {
+				if (s.assignment === Job.CLINIC) {
 					s.trust += 2;
 				}
 			});
diff --git a/src/events/RE/reNickname.js b/src/events/RE/reNickname.js
index 446102ea72a..310939edb9d 100644
--- a/src/events/RE/reNickname.js
+++ b/src/events/RE/reNickname.js
@@ -840,7 +840,7 @@ App.Events.RENickname = class RENickname extends App.Events.BaseEvent {
 				applyDesc: `likes being a lurcher, especially because of what ${he}'s allowed to do to captured hares, and is happy to learn that the role is part of ${his} name now.`,
 				notApplyDesc: `is a bit sad that ${his} role isn't part of ${his} name, since ${he} likes being a lurcher, especially because of what ${he}'s allowed to do to captured hares, and now wonders whether ${he}'ll be allowed to keep doing so.`,
 			});
-		} else if (slave.assignment === "be a subordinate slave") {
+		} else if (slave.assignment === Job.SUBORDINATE) {
 			nickMap.set("server", {
 				nicknameArray: ["Bedwarmer", "Bottom Rung", "Bottom", "Doormat", "Girltoy", "Group Whore", "House Slave", "Kick Me", "Lovergirl", "Please No", "Rapebait", "Servant", "Server", "Servile", "Slave Slut", "Sub", "Submissive"],
 				situationDesc: `holds a place in the hierarchy of your penthouse that almost demands a nickname. ${He} is the lowest of the low, below even your other slaves. ${He} is a pitiable creature, living with a large number of sexually charged people, slave and free, all of whom have the right to demand any sexual service they wish of ${him}.`,
diff --git a/src/events/RESS/milkgasm.js b/src/events/RESS/milkgasm.js
index f42a81e9545..f613d0969fc 100644
--- a/src/events/RESS/milkgasm.js
+++ b/src/events/RESS/milkgasm.js
@@ -32,7 +32,7 @@ App.Events.RESSMilkgasm = class RESSMilkgasm extends App.Events.BaseEvent {
 			contextualIntro(V.PC, eventSlave, true),
 			`has to use milkers every couple of`
 		);
-		if (eventSlave.assignment !== "get milked") {
+		if (eventSlave.assignment !== Job.MILKED) {
 			r.push(`hours even though ${he} isn't assigned to give milk as ${his} primary job.`);
 		} else {
 			r.push(`hours.`);
diff --git a/src/events/RESS/review/confidentTanning.js b/src/events/RESS/review/confidentTanning.js
index 8b142c37488..bd439b81c61 100644
--- a/src/events/RESS/review/confidentTanning.js
+++ b/src/events/RESS/review/confidentTanning.js
@@ -38,7 +38,7 @@ App.Events.RESSConfidentTanning = class RESSConfidentTanning extends App.Events.
 			contextualIntro(PC, eventSlave, true),
 			`was struck by a similar impulse.`,
 		);
-		if (eventSlave.assignment === "rest") {
+		if (eventSlave.assignment === Job.REST) {
 			r.push(`${He}'s assigned to do little but rest,`);
 		} else {
 			r.push(`This is one of ${his} rest periods,`);
@@ -259,7 +259,7 @@ App.Events.RESSConfidentTanning = class RESSConfidentTanning extends App.Events.
 				r.push(`realizes`);
 			}
 			r.push(`what you're doing, ${he} smiles with simple satisfaction and closes ${his} eyes again. You strip and lie down next to ${him}. ${He} made a good decision`);
-			if (eventSlave.assignment === "rest") {
+			if (eventSlave.assignment === Job.REST) {
 				r.push(`about how to spend ${his} rest.`);
 			} else {
 				r.push(`about what to do with ${his} rest period.`);
diff --git a/src/events/RESS/review/cowMilking.js b/src/events/RESS/review/cowMilking.js
index eba3f70eaa9..84543d89835 100644
--- a/src/events/RESS/review/cowMilking.js
+++ b/src/events/RESS/review/cowMilking.js
@@ -36,7 +36,7 @@ App.Events.RESSCowMilking = class RESSCowMilking extends App.Events.BaseEvent {
 			contextualIntro(PC, eventSlave, true)
 		);
 		r.addToLast(`, heading for the penthouse milkers.`);
-		if (eventSlave.assignment === "get milked") {
+		if (eventSlave.assignment === Job.MILKED) {
 			r.push(`Though it's ${his} job to be a human cow, ${he}'s allowed to roam as ${he} pleases when ${he}'s not getting milked, being fed, or otherwise occupied, and ${he} must have been elsewhere.`);
 		} else {
 			r.push(`${He}'s not assigned to be a human cow full time, since it's ${his} main focus to ${eventSlave.assignment}, but ${he}'s still obliged to visit the milkers regularly.`);
diff --git a/src/events/intro/acquisition.js b/src/events/intro/acquisition.js
index 23330f02e94..19e6afd9fb7 100644
--- a/src/events/intro/acquisition.js
+++ b/src/events/intro/acquisition.js
@@ -240,13 +240,11 @@ App.Intro.acquisition = function() {
 			V.averageDevotion += slave.devotion;
 			slavesContributing += 1;
 		} else {
-			if (slave.assignment !== "be confined in the cellblock") {
-				if (slave.assignment !== "be confined in the arcade") {
-					if (slave.assignment !== "work in the dairy" || V.dairyRestraintsSetting < 2) {
-						V.averageTrust += slave.trust * 0.5;
-						V.averageDevotion += slave.devotion * 0.5;
-						slavesContributing += 0.5;
-					}
+			if (slave.assignment !== Job.CELLBLOCK && slave.assignment !== Job.ARCADE) {
+				if (slave.assignment !== Job.DAIRY || V.dairyRestraintsSetting < 2) {
+					V.averageTrust += slave.trust * 0.5;
+					V.averageDevotion += slave.devotion * 0.5;
+					slavesContributing += 0.5;
 				}
 			}
 		}
@@ -891,7 +889,7 @@ App.Intro.acquisition = function() {
 				SoftenSexualFlaw(slave);
 				slave.clothes = "a ball gown";
 				slave.shoes = "flats";
-				slave.assignment = "rest";
+				slave.assignment = Job.REST;
 				break;
 			case "FSRepopulationFocus":
 				slave = GenerateNewSlave("XX", {
@@ -940,7 +938,7 @@ App.Intro.acquisition = function() {
 				slave.shoes = "flats";
 				slave.diet = "fattening";
 				slave.rules.living = "luxurious";
-				slave.assignment = "rest";
+				slave.assignment = Job.REST;
 				break;
 			case "FSIntellectualDependency":
 				slave = GenerateNewSlave("XX", {minAge: 14, maxAge: 18, disableDisability: 1});
diff --git a/src/events/nonRandom/daughters/pCoupAttempt.js b/src/events/nonRandom/daughters/pCoupAttempt.js
index 9afd04086f2..18878cae9b9 100644
--- a/src/events/nonRandom/daughters/pCoupAttempt.js
+++ b/src/events/nonRandom/daughters/pCoupAttempt.js
@@ -233,10 +233,10 @@ App.Events.PCoupAttempt = class PCoupAttempt extends App.Events.BaseEvent {
 		if (V.traitor !== 0 && traitorDeath !== 1) {
 			if (["agent", "trapper"].includes(V.traitorType)) {
 				r.push(`${V.traitor.slaveName} returns to your service having completed the task assigned to ${him}.`);
-				V.traitor.assignment = "rest";
+				V.traitor.assignment = Job.REST;
 			} else if (V.traitorType === "hostage") {
 				r.push(`${V.traitor.slaveName} wanders back to the penthouse, battered and bloody, but alive.`);
-				V.traitor.assignment = "rest";
+				V.traitor.assignment = Job.REST;
 				setHealth(V.traitor, V.traitor.health.condition, V.traitor.health.condition - V.traitor.health.shortDamage + 80, V.traitor.health.longDamage, V.traitor.health.illness, V.traitor.health.tired);
 			} else {
 				r.push(`${V.traitor.slaveName} was captured and has been returned to you.`);
diff --git a/src/events/nonRandom/daughters/pUndergroundRailroad.js b/src/events/nonRandom/daughters/pUndergroundRailroad.js
index 4470899dfae..adffa438b3c 100644
--- a/src/events/nonRandom/daughters/pUndergroundRailroad.js
+++ b/src/events/nonRandom/daughters/pUndergroundRailroad.js
@@ -261,7 +261,7 @@ App.Events.PUndergroundRailroad = class PUndergroundRailroad extends App.Events.
 			}
 			V.traitorWeeks = 1;
 			V.traitor = clone(traitor);
-			V.traitor.assignment = "rest";
+			V.traitor.assignment = Job.REST;
 			V.traitor.pregControl = "none";
 			deflate(V.traitor);
 			V.traitorStats = {
diff --git a/src/events/nonRandom/pBioreactorPerfected.js b/src/events/nonRandom/pBioreactorPerfected.js
index 6f6eb89d9cf..860b03663db 100644
--- a/src/events/nonRandom/pBioreactorPerfected.js
+++ b/src/events/nonRandom/pBioreactorPerfected.js
@@ -8,7 +8,7 @@ App.Events.PBioreactorPerfected = class PBioreactorPerfected extends App.Events.
 
 	actorPrerequisites() {
 		return [[
-			(s) => s.assignment === "work in the dairy",
+			(s) => s.assignment === Job.DAIRY,
 			(s) => s.boobs > 48000,
 			(s) => (s.balls === 0 || s.balls >= 10),
 			(s) => s.fetish === "mindbroken",
diff --git a/src/events/scheduled/seNicaeaCouncil.js b/src/events/scheduled/seNicaeaCouncil.js
index 58c749deee2..a84db3a84a9 100644
--- a/src/events/scheduled/seNicaeaCouncil.js
+++ b/src/events/scheduled/seNicaeaCouncil.js
@@ -38,9 +38,9 @@ App.Events.SENicaeaCouncil = class SENicaeaCouncil extends App.Events.BaseEvent
 			App.Events.addParagraph(node, r);
 			r = [];
 			r.push(`Second, one of the ways it states that free people can make their devotions is to`);
-			if (V.nicaea.assignment === "whore") {
+			if (V.nicaea.assignment === Job.WHORE) {
 				r.push(`fuck a slave whore. Not surprisingly, this will increase demand for prostitutes.`);
-			} else if (V.nicaea.assignment === "serve the public") {
+			} else if (V.nicaea.assignment === Job.PUBLIC) {
 				r.push(`fuck a public slut. Not surprisingly, this will increase demand for public servants.`);
 			} else {
 				r.push(`have sex with one's slaves. This will likely increase respect for those that keep their own fucktoys.`);
@@ -134,9 +134,9 @@ App.Events.SENicaeaCouncil = class SENicaeaCouncil extends App.Events.BaseEvent
 				App.Events.addParagraph(frag, [`On the second question, there are advocates for holy prostitution, sacred public sluts, and pure private harems. Whatever is decided, Chattel Religionism will continue to support and advocate for slaves performing all these roles. This decision will be most important in how it affects Chattel Religionist citizens. The question is whether the creed should encourage free people to patronize slave whores, have sex with public sluts, or purchase and keep their own sex slaves and respect those who have large harems of them? The effectiveness of slaves on the emphasized assignment will be improved.`]);
 
 				r.push(`A majority of the Council currently supports deciding this question in favor of`);
-				if (V.nicaea.assignment === "whore") {
+				if (V.nicaea.assignment === Job.WHORE) {
 					r.push(App.UI.DOM.makeElement("span", `prostitution.`, "bold"));
-				} else if (V.nicaea.assignment === "serve the public") {
+				} else if (V.nicaea.assignment === Job.PUBLIC) {
 					r.push(App.UI.DOM.makeElement("span", `public service.`, "bold"));
 				} else {
 					r.push(App.UI.DOM.makeElement("span", `fucktoy duty.`, "bold"));
@@ -188,9 +188,9 @@ App.Events.SENicaeaCouncil = class SENicaeaCouncil extends App.Events.BaseEvent
 				App.Events.addParagraph(frag, r);
 				r = [];
 				r.push(`The second question was decided in favor of`);
-				if (V.nicaea.assignment === "whore") {
+				if (V.nicaea.assignment === Job.WHORE) {
 					r.push(App.UI.DOM.makeElement("span", `prostitution.`, "bold"));
-				} else if (V.nicaea.assignment === "serve the public") {
+				} else if (V.nicaea.assignment === Job.PUBLIC) {
 					r.push(App.UI.DOM.makeElement("span", `public service.`, "bold"));
 				} else {
 					r.push(App.UI.DOM.makeElement("span", `fucktoy duty.`, "bold"));
diff --git a/src/facilities/dairy/freeRangeDairyAssignmentScene.js b/src/facilities/dairy/freeRangeDairyAssignmentScene.js
index 14d5cf95245..d5fd1d75c90 100644
--- a/src/facilities/dairy/freeRangeDairyAssignmentScene.js
+++ b/src/facilities/dairy/freeRangeDairyAssignmentScene.js
@@ -56,7 +56,7 @@ App.Facilities.Dairy.freeRangeAssignmentScene = function(slave) {
 		App.Events.addParagraph(node, r);
 		r = [];
 
-		const cow = V.slaves.find(s => s.assignment === "work in the dairy" && s.ID !== slave.ID && s.balls >= 10 && s.dick > 0);
+		const cow = V.slaves.find(s => s.assignment === Job.DAIRY && s.ID !== slave.ID && s.balls >= 10 && s.dick > 0);
 		if (cow) {
 			const {
 				He2, His2,
diff --git a/src/facilities/incubator/incubatorInteract.js b/src/facilities/incubator/incubatorInteract.js
index ea6ce2fc561..b97f065d16f 100644
--- a/src/facilities/incubator/incubatorInteract.js
+++ b/src/facilities/incubator/incubatorInteract.js
@@ -194,7 +194,7 @@ App.UI.incubator = function() {
 		for (const slave of V.slaves) {
 			if (slave.preg > 0 && slave.pregKnown === 1 && slave.eggType === "human") {
 				const r = [];
-				const reserveDisallowed = (slave.assignment === "work in the dairy" && V.dairyPregSetting > 0) || slave.assignment === "be your agent" || slave.assignment === "live with your agent";
+				const reserveDisallowed = (slave.assignment === Job.DAIRY && V.dairyPregSetting > 0) || slave.assignment === Job.AGENT || slave.assignment === Job.AGENTPARTNER;
 				if (!reserveDisallowed) {
 					const {
 						His, his
diff --git a/src/facilities/nursery/nursery.js b/src/facilities/nursery/nursery.js
index 81eebf3378e..c8723e56950 100644
--- a/src/facilities/nursery/nursery.js
+++ b/src/facilities/nursery/nursery.js
@@ -382,7 +382,7 @@ App.Facilities.Nursery.nursery = class Nursery extends App.Facilities.Facility {
 			for (const slave of V.slaves) {
 				if (slave.preg > 0 && slave.pregKnown === 1 && slave.eggType === "human") {
 					const r = [];
-					const reserveDisallowed = (slave.assignment === "work in the dairy" && V.dairyPregSetting > 0) || slave.assignment === "be your agent" || slave.assignment === "live with your agent";
+					const reserveDisallowed = (slave.assignment === Job.DAIRY && V.dairyPregSetting > 0) || slave.assignment === Job.AGENT || slave.assignment === Job.AGENTPARTNER;
 					if (!reserveDisallowed) {
 						const {
 							His, his
diff --git a/src/facilities/penthouse/penthouseFramework.js b/src/facilities/penthouse/penthouseFramework.js
index ee9be3de8a4..87faabbda1e 100644
--- a/src/facilities/penthouse/penthouseFramework.js
+++ b/src/facilities/penthouse/penthouseFramework.js
@@ -69,7 +69,7 @@ App.Data.Facilities.penthouse = {
 			fuckdollAccepted: true
 		}
 	},
-	defaultJob: "rest",
+	defaultJob: Job.REST,
 	manager: {
 		position: "Recruiter",
 		assignment: Job.RECRUITER,
diff --git a/src/facilities/surgery/surgeryPassageLower.js b/src/facilities/surgery/surgeryPassageLower.js
index 7250ecafaa2..115f2eb04bf 100644
--- a/src/facilities/surgery/surgeryPassageLower.js
+++ b/src/facilities/surgery/surgeryPassageLower.js
@@ -360,7 +360,7 @@ App.UI.surgeryPassageLower = function(slave, refresh, cheat = false) {
 				if (V.seeExtreme === 1 && V.seeHyperPreg === 1 && V.seePreg !== 0 && V.permaPregImplant === 1) {
 					r = [];
 					linkArray = [];
-					if (slave.assignment === "work in the dairy" && V.dairyPregSetting > 0) {
+					if (slave.assignment === Job.DAIRY && V.dairyPregSetting > 0) {
 						r.push(`${His} womb is already rented out for the production of calves.`);
 					} else if (slave.broodmother > 0) {
 						r.push(`${He} has been made into a`);
diff --git a/src/interaction/sellSlave.js b/src/interaction/sellSlave.js
index 06ed5b232bf..32473df24e6 100644
--- a/src/interaction/sellSlave.js
+++ b/src/interaction/sellSlave.js
@@ -955,7 +955,7 @@ App.Interact.sellSlave = function(slave) {
 					V.boomerangSlave = clone(slave);
 					V.boomerangWeeks = 1;
 					V.boomerangBuyer = key;
-					V.boomerangSlave.assignment = "rest";
+					V.boomerangSlave.assignment = Job.REST;
 					V.boomerangStats = {
 						PCpregSource: 0, PCmother: 0, PCfather: 0, boomerangMother: [], boomerangFather: [], boomerangPregSources: [], boomerangMotherTank: [], boomerangFatherTank: [], boomerangRelationship: 0, boomerangRivalry: 0, boomerangRelation: 0, boomerangBody: 0
 					};
@@ -2463,7 +2463,7 @@ App.Interact.sellSlave = function(slave) {
 					let slaveImpact;
 					r.push(`${slave.slaveName} is soon seen on shift outside a seedy establishment in the lower arcology, mechanically offering ${his} holes to passersby and flinching whenever ${his} superiors come out to check on ${him}.`);
 					for (const s of V.slaves) {
-						if (s.assignment === "whore" || s.assignment === "work in the brothel") {
+						if (s.assignment === Job.WHORE || s.assignment === Job.BROTHEL) {
 							s.trust -= 2;
 							slaveImpact = 1;
 						}
@@ -2554,7 +2554,7 @@ App.Interact.sellSlave = function(slave) {
 					let slaveImpact;
 					r.push(`${slave.slaveName} disappears for a time as ${his} training is perfected, but ${he} reappears in the refined brothel, wearing classy clothes and flirting gracefully with patrons of ${his} body.`);
 					for (const s of V.slaves) {
-						if ((s.assignment === "whore") || (s.assignment === "work in the brothel")) {
+						if ((s.assignment === Job.WHORE) || (s.assignment === Job.BROTHEL)) {
 							s.trust += 1;
 							slaveImpact = 1;
 						}
@@ -2575,7 +2575,7 @@ App.Interact.sellSlave = function(slave) {
 					let slaveImpact;
 					r.push(`${slave.slaveName} is a common sight around the arcology, since free range cows are allowed to range between milkings. ${He} seems reasonably content.`);
 					for (const s of V.slaves) {
-						if ((s.assignment === "get milked") || (s.assignment === "work in the dairy")) {
+						if ((s.assignment === Job.MILKED) || (s.assignment === Job.DAIRY)) {
 							s.trust += 1;
 							slaveImpact = 1;
 						}
diff --git a/src/interaction/siRules.js b/src/interaction/siRules.js
index 2b05a1c0f80..d781013b6a3 100644
--- a/src/interaction/siRules.js
+++ b/src/interaction/siRules.js
@@ -124,11 +124,11 @@ App.UI.SlaveInteract.rules = function(slave, refresh) {
 		p.append("Living standard: ");
 
 		if (App.Data.misc.facilityCareers.includes(slave.assignment)) {
-			App.UI.DOM.appendNewElement("span", p, ` ${His} living conditions are managed by ${his} assignment.`, "note");
-		} else if ((slave.assignment === "be your Head Girl") && (V.HGSuite === 1)) {
-			App.UI.DOM.appendNewElement("span", p, ` ${He} has ${his} own little luxurious room in the penthouse with everything ${he} needs to be a proper Head Girl.`, "note");
-		} else if ((slave.assignment === "guard you") && (V.dojo > 1)) {
-			App.UI.DOM.appendNewElement("span", p, ` ${He} has a comfortable room in the armory to call ${his} own.`, "note");
+			App.UI.DOM.appendNewElement("span", p, ` ${His} living conditions are managed by ${his} assignment.`, ["note"]);
+		} else if ((slave.assignment === Job.HEADGIRL) && (V.HGSuite === 1)) {
+			App.UI.DOM.appendNewElement("span", p, ` ${He} has ${his} own little luxurious room in the penthouse with everything ${he} needs to be a proper Head Girl.`, ["note"]);
+		} else if ((slave.assignment === Job.BODYGUARD) && (V.dojo > 1)) {
+			App.UI.DOM.appendNewElement("span", p, ` ${He} has a comfortable room in the armory to call ${his} own.`, ["note"]);
 		} else {
 			choices = [
 				{value: "spare"},
@@ -161,7 +161,7 @@ App.UI.SlaveInteract.rules = function(slave, refresh) {
 			];
 			div.append(listChoices(choices, "rest"));
 		} else {
-			App.UI.DOM.appendNewElement("span", div, ` ${His} assignment does not allow setting a sleeping schedule.`, "note");
+			App.UI.DOM.appendNewElement("span", div, ` ${His} assignment does not allow setting a sleeping schedule.`, ["note"]);
 		}
 		p.append(div);
 
diff --git a/src/interaction/subordinateTargeting.js b/src/interaction/subordinateTargeting.js
index ceefe61bdcc..608e9ef2e86 100644
--- a/src/interaction/subordinateTargeting.js
+++ b/src/interaction/subordinateTargeting.js
@@ -13,8 +13,8 @@ App.UI.subordinateTargeting = function() {
 			slave.subTarget = 0;
 		}
 	}
-	if (slave.assignment !== "be a subordinate slave") {
-		assignJob(slave, "be a subordinate slave");
+	if (slave.assignment !== Job.SUBORDINATE) {
+		assignJob(slave, Job.SUBORDINATE);
 	}
 	const st = getSlave(slave.subTarget);
 	r.push(slave.slaveName);
diff --git a/src/js/birth/birth.js b/src/js/birth/birth.js
index a72cb6f6c69..6a06d505580 100644
--- a/src/js/birth/birth.js
+++ b/src/js/birth/birth.js
@@ -1000,7 +1000,7 @@ globalThis.birth = function(slave, {birthStorm = false, cSection = false, artRen
 								// did she make it to her birthing area?
 								r.push(birthDescription());
 							} else { // did not make it to birthing area
-								if (((birthDamage > 15 && random(1, 100) > 50) || (birthDamage > 20)) && (slave.assignment !== "be the Nurse" && slave.assignment !== "get treatment in the clinic")) {
+								if (((birthDamage > 15 && random(1, 100) > 50) || (birthDamage > 20)) && (slave.assignment !== Job.NURSE && slave.assignment !== Job.CLINIC)) {
 									r.push(deadlyBirthScene());
 								} else {
 									r.push(suddenBirthScene());
diff --git a/src/js/utilsSlave.js b/src/js/utilsSlave.js
index e99c9c32cbd..90c210301fe 100644
--- a/src/js/utilsSlave.js
+++ b/src/js/utilsSlave.js
@@ -3640,7 +3640,7 @@ globalThis.restoreTraitor = function() {
 	if (V.traitor === 0) { // typing only
 		return;
 	}
-	V.traitor.assignment = "rest";
+	V.traitor.assignment = Job.REST;
 	if (V.traitorStats.PCpregSource > 0 && V.PC.preg > 0 && V.PC.pregSource === 0) {
 		V.PC.pregSource = V.traitor.ID;
 	}
diff --git a/src/npc/descriptions/belly/belly.js b/src/npc/descriptions/belly/belly.js
index 7632b7d525d..0c6256017e7 100644
--- a/src/npc/descriptions/belly/belly.js
+++ b/src/npc/descriptions/belly/belly.js
@@ -2447,7 +2447,7 @@ App.Desc.belly = function(slave, descType = DescType.NORMAL) {
 				r.push(`overstretched`);
 			}
 			r.push(`stomach sags massively after being distended for so long.`);
-		} else if ((slave.assignment === "work in the dairy") && (V.dairyFeedersSetting + V.dairyStimulatorsSetting > 2)) {
+		} else if ((slave.assignment === Job.DAIRY) && (V.dairyFeedersSetting + V.dairyStimulatorsSetting > 2)) {
 			r.push(`${His} stomach is painfully distended from the nutrition and hydration being pumped down ${his} throat and up ${his} butt.`);
 		} else if (slave.weight > 190) {
 			if (slave.muscles > 95) {
@@ -14234,7 +14234,7 @@ App.Desc.belly = function(slave, descType = DescType.NORMAL) {
 					} else {
 						r.push(`It is easily as large as ${his} torso, making ${him} at least half belly.`);
 					}
-					if (slave.assignment !== "labor in the production line" && slave.assignment !== "be confined in the arcade" && (slave.assignment !== "work in the dairy" || V.dairyRestraintsSetting < 2) && slave.belly >= 300000) {
+					if (slave.assignment !== Job.BABY_FACTORY && slave.assignment !== Job.ARCADE && (slave.assignment !== Job.DAIRY || V.dairyRestraintsSetting < 2) && slave.belly >= 300000) {
 						if (V.pregAccessibility === 1) {
 							r.push(`Fortunately for ${him}, the penthouse is adapted for daily life with a`);
 							if (slave.bellyPreg >= 3000) {
diff --git a/src/npc/descriptions/butt/butt.js b/src/npc/descriptions/butt/butt.js
index 3b2d0b828b8..01858a39244 100644
--- a/src/npc/descriptions/butt/butt.js
+++ b/src/npc/descriptions/butt/butt.js
@@ -1106,7 +1106,7 @@ App.Desc.butt = function(slave, descType = DescType.NORMAL) {
 		r.push(`${either("gigantic", "titanic")} ass,`);
 	} else if (slave.butt <= 10) {
 		r.push(`${either("gigantic", "titanic")} ass,`);
-		if (slave.assignment === "work in the dairy" && V.dairyStimulatorsSetting > 1) {
+		if (slave.assignment === Job.DAIRY && V.dairyStimulatorsSetting > 1) {
 			r.push(`so big it jiggles as the machine rapes ${his} asshole,`);
 		} else if (!canWalk(slave)) {
 			r.push(`so big it would jiggle as ${he} walked — if ${he} could walk —`);
@@ -1115,7 +1115,7 @@ App.Desc.butt = function(slave, descType = DescType.NORMAL) {
 		}
 	} else if (slave.butt <= 14) {
 		r.push(`${either("cushion-like", "hall-crowding")} ass,`);
-		if (slave.assignment === "work in the dairy" && V.dairyStimulatorsSetting > 1) {
+		if (slave.assignment === Job.DAIRY && V.dairyStimulatorsSetting > 1) {
 			r.push(`so big it massively jiggles as the machine rapes ${his} asshole,`);
 		} else if (!canWalk(slave)) {
 			r.push(`so big it would jiggle nonstop as ${he} walked — if ${he} could walk —`);
@@ -1124,7 +1124,7 @@ App.Desc.butt = function(slave, descType = DescType.NORMAL) {
 		}
 	} else {
 		r.push(`${either("bean bag sized", "room-crowding")} ass,`);
-		if (slave.assignment === "work in the dairy" && V.dairyStimulatorsSetting > 1) {
+		if (slave.assignment === Job.DAIRY && V.dairyStimulatorsSetting > 1) {
 			r.push(`so massive it jiggles endlessly as the machine rapes ${his} asshole,`);
 		} else if (!canWalk(slave)) {
 			r.push(`so massive it would jiggle endlessly as ${he} walked — if ${he} could walk —`);
diff --git a/src/npc/descriptions/butt/buttplug.js b/src/npc/descriptions/butt/buttplug.js
index bf6b9f715d1..b2736db64e5 100644
--- a/src/npc/descriptions/butt/buttplug.js
+++ b/src/npc/descriptions/butt/buttplug.js
@@ -8,7 +8,7 @@ App.Desc.buttplug = function(slave, descType = DescType.NORMAL) {
 	const {
 		he, him, his, He, His
 	} = getPronouns(slave);
-	if (slave.assignment === "work in the dairy" && V.dairyRestraintsSetting > 1) {
+	if (slave.assignment === Job.DAIRY && V.dairyRestraintsSetting > 1) {
 		r.push(`${slave.slaveName}'s anus is`);
 		if (V.dairyStimulatorsSetting > 1) {
 			r.push(`filled by an enormous dildo`);
diff --git a/src/npc/descriptions/crotch/crotch.js b/src/npc/descriptions/crotch/crotch.js
index f18d10114d7..12b99298486 100644
--- a/src/npc/descriptions/crotch/crotch.js
+++ b/src/npc/descriptions/crotch/crotch.js
@@ -9,7 +9,7 @@ App.Desc.crotch = function(slave, descType = DescType.NORMAL) {
 		he, him, his, He, His, hers
 	} = getPronouns(slave);
 	if (V.showClothing === 1 && descType !== DescType.MARKET) {
-		if (slave.assignment === "work in the dairy" && V.dairyRestraintsSetting > 1) {
+		if (slave.assignment === Job.DAIRY && V.dairyRestraintsSetting > 1) {
 			if (V.dairyPregSetting > 1 && slave.ovaries === 1) {
 				r.push(`${slave.slaveName}'s pussy is occupied by a massive dildo, servicing ${his} womb with its ejaculate.`);
 			} else if (slave.balls > 0) {
diff --git a/src/npc/descriptions/crotch/dick.js b/src/npc/descriptions/crotch/dick.js
index 1a98ebe438d..36049affe03 100644
--- a/src/npc/descriptions/crotch/dick.js
+++ b/src/npc/descriptions/crotch/dick.js
@@ -497,7 +497,7 @@ App.Desc.dick = function(slave, descType = DescType.NORMAL) {
 		if (slave.fuckdoll === 0) {
 			if (slave.mpreg === 1 && canAchieveErection(slave) && slave.bellyPreg >= 10000 && slave.prostate > 0) {
 				r.push(`${His} huge pregnancy puts pressure on ${his} prostate at all times, leaving ${him} fully erect and trailing cum.`);
-			} else if ((slave.assignment === "work in the dairy") && (V.dairyStimulatorsSetting > 1) && canAchieveErection(slave)) {
+			} else if ((slave.assignment === Job.DAIRY) && (V.dairyStimulatorsSetting > 1) && canAchieveErection(slave)) {
 				if (slave.dick > 8) {
 					r.push(`${He}'s soft despite the drugs ejaculated by the dildo up ${his} asshole, since ${his} cock is too huge to ever become hard. The soft monstrosity simply exists to gush cum into a catch basin.`);
 				} else if (slave.dick > 6) {
diff --git a/src/npc/descriptions/crotch/vagina.js b/src/npc/descriptions/crotch/vagina.js
index 81b0d83a9a1..424337c0659 100644
--- a/src/npc/descriptions/crotch/vagina.js
+++ b/src/npc/descriptions/crotch/vagina.js
@@ -111,7 +111,7 @@ App.Desc.vagina = function(slave) {
 					}
 				}
 			} else if (slave.vaginaLube < 2) {
-				if (slave.assignment === "work in the dairy" && V.dairyPregSetting > 1) {
+				if (slave.assignment === Job.DAIRY && V.dairyPregSetting > 1) {
 					r.push(`The dildo's ejaculate includes a drug that causes copious, constant vaginal lubrication, allowing it to fuck ${him} despite its giant size. The excess female fluid drips off ${him} and into a catch basin.`);
 				} else if ((slave.aphrodisiacs > 0) || (slave.inflationType === "aphrodisiac")) {
 					r.push(`The aphrodisiacs have them`);
@@ -184,7 +184,7 @@ App.Desc.vagina = function(slave) {
 					}
 				}
 			} else {
-				if (slave.assignment === "work in the dairy" && V.dairyPregSetting > 1) {
+				if (slave.assignment === Job.DAIRY && V.dairyPregSetting > 1) {
 					r.push(`The dildo's ejaculate includes a drug that encourages vaginal lubrication, which is having a drastic effect on ${him}, since ${he}'s already very gifted in that regard. The dildo makes a wet noise every time it thrusts into ${him}, and femcum streams into a catch basin beneath ${him}. The smell of pussy is overwhelming.`);
 				} else if ((slave.aphrodisiacs > 0) || (slave.gingering && slave.gingering.type === "vasodilator") || (slave.inflationType === "aphrodisiac")) {
 					r.push(`The combination of the aphrodisiacs and ${his} natural tendency to produce a lot of female lubricant is having a drastic effect. ${His} cunt is absolutely beribboned with femcum, and ${he} smells strongly of wet, clean pussy.`);
@@ -656,9 +656,7 @@ App.Desc.vagina = function(slave) {
 	} else if (slave.pubicHStyle === "bald") {
 		r.push(`${He} is no longer able to grow pubic hair, leaving ${him} hairless and smooth.`);
 	} else if (slave.pubicHStyle === "waxed") {
-		if (slave.fuckdoll > 0) {
-			r.push(`${His} pubic hair has been removed to prevent chafing.`);
-		} else if ((slave.assignment === "work in the dairy") && (V.dairyRestraintsSetting > 1)) {
+		if (slave.fuckdoll > 0 || (slave.assignment === Job.DAIRY && V.dairyRestraintsSetting > 1)) {
 			r.push(`${His} pubic hair has been removed to prevent chafing.`);
 		} else {
 			r.push(`${He}'s waxed and smooth.`);
diff --git a/src/npc/descriptions/describePiercings.js b/src/npc/descriptions/describePiercings.js
index 695d8823c90..d981dddc46d 100644
--- a/src/npc/descriptions/describePiercings.js
+++ b/src/npc/descriptions/describePiercings.js
@@ -23,7 +23,7 @@ App.Desc.piercing = function(slave, surface) {
 				} else {
 					r.push(`${His} ears are heavily pierced, with multiple lobe piercings and a row of helix piercings.`);
 				}
-				if (slave.assignment === "get milked" || slave.assignment === "work in the dairy") {
+				if (slave.assignment === Job.MILKED || slave.assignment === Job.DAIRY) {
 					r.push(`${He} has a plastic livestock tag in one ear to help identify ${him} for milking.`);
 				} else if (clothing && clothing.desc && "earPiercing" in clothing.desc) {
 					r.push(clothing.desc.earPiercing(slave));
diff --git a/src/npc/descriptions/longSlave.js b/src/npc/descriptions/longSlave.js
index 095cbddbeda..b0e4a208996 100644
--- a/src/npc/descriptions/longSlave.js
+++ b/src/npc/descriptions/longSlave.js
@@ -192,7 +192,7 @@ App.Desc.longSlave = function(slave, {descType, market = 0, marketText, noArt} =
 	if (descType === DescType.NORMAL) {
 		if (canSee(slave)) {
 			if (slave.attrKnown === 1) {
-				if ((slave.assignment !== "work in the dairy") || (V.dairyRestraintsSetting > 1)) {
+				if ((slave.assignment !== Job.DAIRY) || (V.dairyRestraintsSetting > 1)) {
 					if ((slave.attrXX > 85) && (V.PC.boobs >= 400)) {
 						r.push(`${His} attraction to women is obvious: ${he} can't seem to stop staring at your breasts.`);
 					} else if ((slave.attrXY > 85) && (V.PC.dick !== 0)) {
@@ -487,7 +487,7 @@ App.Desc.longSlave = function(slave, {descType, market = 0, marketText, noArt} =
 		} else if (slave.underArmHStyle === "bald") {
 			r.push(`${His} armpits no longer grow hair, leaving them smooth and hairless.`);
 		} else if (slave.underArmHStyle === "waxed") {
-			if (slave.assignment === "work in the dairy" && V.dairyRestraintsSetting > 1) {
+			if (slave.assignment === Job.DAIRY && V.dairyRestraintsSetting > 1) {
 				r.push(`${His} armpit hair has been removed to prevent chafing.`);
 			} else {
 				r.push(`${His} armpits are waxed and smooth.`);
diff --git a/src/npc/descriptions/mouth.js b/src/npc/descriptions/mouth.js
index 606e946e08b..9699e36f7c2 100644
--- a/src/npc/descriptions/mouth.js
+++ b/src/npc/descriptions/mouth.js
@@ -47,7 +47,7 @@ App.Desc.mouth = function(slave) {
 
 	if (slave.fuckdoll > 0) {
 		r.push(`${His} mouth is held open by the suit's oral insert.`);
-	} else if ((slave.assignment === "work in the dairy") && (V.dairyRestraintsSetting > 1)) {
+	} else if ((slave.assignment === Job.DAIRY) && (V.dairyRestraintsSetting > 1)) {
 		if (V.dairyFeedersSetting > 1) {
 			r.push(`${His} milking machine has a phallus a long way down ${his} throat to rehydrate ${him}.`);
 		} else {
diff --git a/src/npc/descriptions/sceneIntro.js b/src/npc/descriptions/sceneIntro.js
index b9132008ecb..76bd52bc258 100644
--- a/src/npc/descriptions/sceneIntro.js
+++ b/src/npc/descriptions/sceneIntro.js
@@ -138,7 +138,7 @@ App.Desc.sceneIntro = function(slave, descType) {
 	function sentence() {
 		const r = [];
 
-		if (slave.assignment === "work a glory hole") {
+		if (slave.assignment === Job.GLORYHOLE) {
 			r.push(`${His} sentence lasts another`);
 			if (slave.sentence > 1) {
 				r.push(`${slave.sentence} weeks.`);
@@ -281,7 +281,7 @@ App.Desc.sceneIntro = function(slave, descType) {
 			r.push(`${He} lives in ${his} own room within the armory,`);
 		} else if ([Job.MASTERSUITE, Job.CONCUBINE].includes(slave.assignment) && V.masterSuiteUpgradeLuxury === 1) {
 			r.push(`${He} sleeps with you in your bed,`);
-		} else if ((slave.assignment === "work in the dairy") && (V.dairyRestraintsSetting > 1)) {
+		} else if ((slave.assignment === Job.DAIRY) && (V.dairyRestraintsSetting > 1)) {
 			r.push(`${He} sleeps attached to a milking machine,`);
 		} else if (slave.rules.living === "spare") {
 			r.push(`${He} sleeps on a bedroll,`);
diff --git a/src/npc/generate/newSlaveIntro.js b/src/npc/generate/newSlaveIntro.js
index 8513da0032a..29bdf29f305 100644
--- a/src/npc/generate/newSlaveIntro.js
+++ b/src/npc/generate/newSlaveIntro.js
@@ -1472,7 +1472,7 @@ App.UI.newSlaveIntro = function(slave, slave2, {tankBorn = false, momInterest =
 								r.push(`like the slut ${he2} is.`);
 							} else if (slave2.skill.whoring > 30) {
 								r.push(`like the whore ${he2} is.`);
-							} else if ((slave2.assignment === "serve in the master suite") || (slave2.assignment === "please you")) {
+							} else if ((slave2.assignment === Job.MASTERSUITE) || (slave2.assignment === Job.FUCKTOY)) {
 								r.push(`like the fucktoy ${he2} is.`);
 							} else {
 								r.push(r.pop() + ".");
@@ -1540,7 +1540,7 @@ App.UI.newSlaveIntro = function(slave, slave2, {tankBorn = false, momInterest =
 								r.push(`like the slut ${he2} is.`);
 							} else if (slave2.skill.whoring > 30) {
 								r.push(`like the whore ${he2} is.`);
-							} else if ((slave2.assignment === "serve in the master suite") || (slave2.assignment === "please you")) {
+							} else if ((slave2.assignment === Job.MASTERSUITE) || (slave2.assignment === Job.FUCKTOY)) {
 								r.push(`like the fucktoy ${he2} is.`);
 							} else {
 								r.push(r.pop() + ".");
@@ -1608,7 +1608,7 @@ App.UI.newSlaveIntro = function(slave, slave2, {tankBorn = false, momInterest =
 								r.push(`like the slut ${he2} is.`);
 							} else if (slave2.skill.whoring > 30) {
 								r.push(`like the whore ${he2} is.`);
-							} else if ((slave2.assignment === "serve in the master suite") || (slave2.assignment === "please you")) {
+							} else if ((slave2.assignment === Job.MASTERSUITE) || (slave2.assignment === Job.FUCKTOY)) {
 								r.push(`like the fucktoy ${he2} is.`);
 							} else {
 								r.push(r.pop() + ".");
@@ -1667,7 +1667,7 @@ App.UI.newSlaveIntro = function(slave, slave2, {tankBorn = false, momInterest =
 								r.push(`like the slut ${he2} is.`);
 							} else if (slave2.skill.whoring > 30) {
 								r.push(`like the whore ${he2} is.`);
-							} else if ((slave2.assignment === "serve in the master suite") || (slave2.assignment === "please you")) {
+							} else if ((slave2.assignment === Job.MASTERSUITE) || (slave2.assignment === Job.FUCKTOY)) {
 								r.push(`like the fucktoy ${he2} is.`);
 							} else {
 								r.push(r.pop() + ".");
@@ -1735,7 +1735,7 @@ App.UI.newSlaveIntro = function(slave, slave2, {tankBorn = false, momInterest =
 								r.push(`like the slut ${he2} is.`);
 							} else if (slave2.skill.whoring > 30) {
 								r.push(`like the whore ${he2} is.`);
-							} else if ((slave2.assignment === "serve in the master suite") || (slave2.assignment === "please you")) {
+							} else if ((slave2.assignment === Job.MASTERSUITE) || (slave2.assignment === Job.FUCKTOY)) {
 								r.push(`like the fucktoy ${he2} is.`);
 							} else {
 								r.push(r.pop() + ".");
-- 
GitLab