diff --git a/src/personalAssistant/assistant.js b/src/personalAssistant/assistant.js
index 6d691993e8e41dbd920f030c4b471e7caa907700..4078eb5accdac637246dc17446357a2425c84821 100644
--- a/src/personalAssistant/assistant.js
+++ b/src/personalAssistant/assistant.js
@@ -5,6 +5,9 @@ globalThis.assistant = (function() {
 		pronouns: pronouns,
 	};
 
+	/**
+	 * runs the assistant's backwards compatibility
+	 */
 	function BC() {
 		App.Update.assistantBC();
 	}
diff --git a/src/personalAssistant/assistantAppearancePackTwo.js b/src/personalAssistant/assistantAppearancePackTwo.js
index c43b24c74ffc74085eac1634f6b5e5db2d40cdc4..cf988f030ec90ea0e21abe5126c5e371dd9a11ef 100644
--- a/src/personalAssistant/assistantAppearancePackTwo.js
+++ b/src/personalAssistant/assistantAppearancePackTwo.js
@@ -47,52 +47,79 @@ App.UI.assistantAppearancePackTwo = function() {
 
 	return node;
 
+	/**
+	 * @returns {string} flavor text for the assistants angel appearance
+	 */
 	function angel() {
 		refreshArt();
 		V.assistant.appearance = "angel";
 		return `At your order, ${heA} installs the angel appearance. ${HeA} spreads ${hisA} wings and checks out ${hisA} new body, "Thanks, ${properTitle()}, but could I have a robe or something? I'm indecent!" ${HeA} blushes red. "You can always customize me from the arcology management menu," ${heA} adds.`;
 	}
 
+	/**
+	 * @returns {string} flavor text for the assistants cherub appearance
+	 */
 	function cherub() {
 		refreshArt();
 		V.assistant.appearance = "cherub";
 		return `At your order, ${heA} installs the cherub appearance. ${HeA} returns to ${hisA} youthful figure and sprouts ${hisA} wings. "This is awesome, little embarrassing though..." ${HeA} says, covering ${hisA} shame. "You can always customize me from the arcology management menu," ${heA} adds.`;
 	}
 
+	/**
+	 * @returns {string} flavor text for the assistants imp appearance
+	 */
 	function imp() {
 		refreshArt();
 		V.assistant.appearance = "imp";
 		return `At your order, ${heA} installs the imp appearance. ${HeA} returns to ${hisA} youthful figure and sprouts ${hisA} wings. "This is awesome! So, wanna fool around? Maybe go torment some slaves?" ${HeA} says, pulling out a pitchfork. "You can always customize me from the arcology management menu," ${heA} adds.`;
 	}
 
+	/**
+	 * @returns {string} flavor text for the assistants succubus appearance
+	 */
 	function succubus() {
 		refreshArt();
 		V.assistant.appearance = "succubus";
 		return `At your order, ${heA} installs the succubus appearance. ${HeA} promptly takes your breath away. "Thank you, ${properTitle()}. Now how shall I show you my appreciation..." ${HisA} avatar trails off while spreading ${hisA} legs and flashing you ${hisA} lovely pussy. "You can always customize me from the arcology management menu," ${heA} adds, with a hint of disapproval.`;
 	}
 
+	/**
+	 * @returns {string} flavor text for the assistants incubus appearance
+	 */
 	function incubus() {
 		refreshArt();
 		V.assistant.appearance = "incubus";
 		return `At your order, ${heA} installs the incubus appearance. ${HeA} becomes rather masculine, sporting a soft cock nearly as long as ${hisA} thigh. "Thank you, ${properTitle()}. This is going to be fun. Would you like a taste?" ${HeA} steadily becomes erect, a bead of precum forming at its tip. "You can always customize me from the arcology management menu," ${heA} adds, with a hint of disapproval.`;
 	}
 
+	/**
+	 * @returns {string} flavor text for the assistants witch appearance
+	 */
 	function witch() {
 		refreshArt();
 		V.assistant.appearance = "witch";
 		return `At your order, ${heA} installs the novice witch appearance. ${HeA} wraps a tightly clinging robe around ${hisA} voluptuous body and dons a wide-brimmed hat. "You can always customize me from the arcology management menu," ${heA} adds, pulling a book of lewd spells out.`;
 	}
 
+	/**
+	 * @returns {string} flavor text for the assistants `bugged` appearance
+	 */
 	function bugged() {
 		refreshArt();
 		V.assistant.appearance = "ERROR_1606_APPEARANCE_FILE_CORRUPT";
 		return `At your order, ${heA} installs the bugged appearance. ${HisA} body twists and contorts into an abomination of flesh and bone. It is honestly unsettling to look at. The thing morphs its body into a familiar female shape, though it is still off. Especially ${hisA} eyes; they seem soulless. "You can always customize me from the arcology management menu," ${heA} adds, in an ill pronounced mimicry of your voice.`;
 	}
 
+	/**
+	 * @returns {string} flavor text for the assistant keeping their current appearance
+	 */
 	function current() {
 		return `At your order, ${heA} maintains the ${V.assistant.appearance} appearance as ${hisA} avatar. "Yes, ${properTitle()}," ${heA} confirms, and adds "if you reconsider, I can be customized from the arcology management menu."`;
 	}
 
+	/**
+	 * Refreshes the assistants art
+	 */
 	function refreshArt() {
 		App.Events.refreshEventArt("assistant");
 	}
diff --git a/src/personalAssistant/assistantOptions.js b/src/personalAssistant/assistantOptions.js
index 3dc82803f5b7dfc2683655f49a656e6fc89b042d..b2f83d1f7b4a06b5d93589d4905d620a2895f42a 100644
--- a/src/personalAssistant/assistantOptions.js
+++ b/src/personalAssistant/assistantOptions.js
@@ -54,6 +54,9 @@ App.UI.personalAssistantOptions = function() {
 
 	return node;
 
+	/**
+	 * @returns {DocumentFragment} a DocumentFragment that lets the player upgrade the assistant's computer
+	 */
 	function upgrades() {
 		const frag = new DocumentFragment();
 
@@ -103,6 +106,9 @@ App.UI.personalAssistantOptions = function() {
 		return frag;
 	}
 
+	/**
+	 * @returns {DocumentFragment} a DocumentFragment that lets the player change the assistant's settings
+	 */
 	function settings() {
 		const frag = new DocumentFragment();
 
@@ -169,6 +175,9 @@ App.UI.personalAssistantOptions = function() {
 		return frag;
 	}
 
+	/**
+	 * @returns {DocumentFragment} a DocumentFragment that lets the player change the assistants appearace
+	 */
 	function appearance() {
 		const frag = new DocumentFragment();
 
diff --git a/src/player/doctorConsultation.js b/src/player/doctorConsultation.js
index e6658b925c881d01fccbfe16803254ecfb68b996..1442740ff5ac55bbcc3a579d678cd0d84128c834 100644
--- a/src/player/doctorConsultation.js
+++ b/src/player/doctorConsultation.js
@@ -48,6 +48,9 @@ App.UI.doctorConsultation = function() {
 
 	return frag;
 
+	/**
+	 * @returns {HTMLDivElement} a div that shows the players current health status
+	 */
 	function medicalExam() {
 		const r = [];
 		const PCH = V.PC.health;
@@ -251,6 +254,9 @@ App.UI.doctorConsultation = function() {
 		return examDiv;
 	}
 
+	/**
+	 * @returns {HTMLDivElement} a div that lets the player choose what drugs to take/stop taking
+	 */
 	function drugs() {
 		const hormonesDiv = document.createElement("div");
 		const playerDrugsDiv = document.createElement("div");
@@ -279,6 +285,9 @@ App.UI.doctorConsultation = function() {
 
 		return drugsDiv;
 
+		/**
+		 * @returns {HTMLDivElement} a div that lets the player choose what player grade drugs to take/stop taking
+		 */
 		function playerDrugs() {
 			App.UI.DOM.appendNewElement("h3", playerDrugsDiv, `Drugs`);
 			const text = [];
@@ -430,6 +439,9 @@ App.UI.doctorConsultation = function() {
 			return playerDrugsDiv;
 		}
 
+		/**
+		 * @returns {HTMLDivElement} a div that lets the player take/stop taking hormonal drugs
+		 */
 		function hormones() {
 			App.UI.DOM.appendNewElement("h3", hormonesDiv, `Hormones`);
 			const text = [];
@@ -463,6 +475,9 @@ App.UI.doctorConsultation = function() {
 			return hormonesDiv;
 		}
 
+		/**
+		 * @returns {HTMLDivElement} a div that lets the player toggle the use of labor suppressors
+		 */
 		function pregDrugs() {
 			App.UI.DOM.appendNewElement("h3", pregDrugsDiv, `Pregnancy Drugs`);
 			const text = [];
@@ -491,6 +506,9 @@ App.UI.doctorConsultation = function() {
 			return pregDrugsDiv;
 		}
 
+		/**
+		 * @returns {HTMLDivElement} a div that lets the player toggle the use of anaphrodisiacs
+		 */
 		function anaphrodisiacs() {
 			const text = [];
 
@@ -519,6 +537,9 @@ App.UI.doctorConsultation = function() {
 			return anaphrodisiacDiv;
 		}
 
+		/**
+		 * @returns {HTMLDivElement} a div that lets the player go on a diet that weans them off slave food
+		 */
 		function slaveFoodCure() {
 			const text = [];
 
@@ -555,6 +576,10 @@ App.UI.doctorConsultation = function() {
 		}
 	}
 
+	/**
+	 * increases the players health by 5
+	 * @returns {HTMLDivElement} a div that shows the flavor text of a small boost to the players health
+	 */
 	function healthBoost() {
 		const text = [];
 
@@ -566,6 +591,10 @@ App.UI.doctorConsultation = function() {
 		return treatDiv;
 	}
 
+	/**
+	 * reduces the players illness by 2 (with a floor of 0)
+	 * @returns {HTMLDivElement} a div that shows the flavor text for a reduction in the players illness
+	 */
 	function treatIllness() {
 		const text = [];
 
diff --git a/src/player/electiveSurgery.js b/src/player/electiveSurgery.js
index 9b05ecdada5a6555d100f5b7c6008c388c0ced6f..9c7d016e9c29a33c363099e2d959ce72026c473f 100644
--- a/src/player/electiveSurgery.js
+++ b/src/player/electiveSurgery.js
@@ -142,6 +142,11 @@ App.UI.electiveSurgery = function() {
 
 	return el;
 
+	/**
+	 * @param {number} price the price to be potential discounted
+	 * @param {boolean} [implant] should be true if it is an implant being discounted
+	 * @returns {number} discounted price
+	 */
 	function applyDiscount(price, implant = false) {
 		if (freebie === 1) {
 			price *= .5;
@@ -157,6 +162,9 @@ App.UI.electiveSurgery = function() {
 		return price;
 	}
 
+	/**
+	 * Appends a div to `el` that lets the player change their facial features (younger or older)
+	 */
 	function face() {
 		const p = document.createElement("p");
 		const r = [];
@@ -198,6 +206,9 @@ App.UI.electiveSurgery = function() {
 		el.append(p);
 	}
 
+	/**
+	 * Appends a div to `el` that lets the player change their skin tone
+	 */
 	function skin() {
 		const p = document.createElement("p");
 		const r = [];
@@ -240,6 +251,9 @@ App.UI.electiveSurgery = function() {
 		el.append(p);
 	}
 
+	/**
+	 * Appends a div to `el` that lets the player change their breast size
+	 */
 	function breasts() {
 		const p = document.createElement("p");
 		const r = [];
@@ -336,6 +350,9 @@ App.UI.electiveSurgery = function() {
 		p.append(App.UI.DOM.makeElement("div", App.UI.DOM.generateLinksStrip(linkArray)));
 		el.append(p);
 
+		/**
+		 * @returns {HTMLAnchorElement} a link for breast implant removal
+		 */
 		function breastReductionImplant() {
 			return surgeryLink("Have your implants removed", "breastReductionImplant", () => {
 				V.PC.boobs -= V.PC.boobsImplant;
@@ -345,6 +362,9 @@ App.UI.electiveSurgery = function() {
 			});
 		}
 
+		/**
+		 * @returns {HTMLAnchorElement} a link for breast enlargement via implant
+		 */
 		function breastEnlargementImplant() {
 			return surgeryLink("Get the next size up", "breastEnlargementImplant", () => {
 				V.PC.boobs += 200;
@@ -353,6 +373,10 @@ App.UI.electiveSurgery = function() {
 			});
 		}
 
+		/**
+		 * @param {number} [boobGrowth] how much the breasts should be enlarged (200 by default)
+		 * @returns {HTMLAnchorElement} a link for breast enlargement via flesh
+		 */
 		function breastEnlargement(boobGrowth = 200) {
 			return surgeryLink("Add additional breast tissue", "breastEnlargement", () => {
 				V.PC.boobs += boobGrowth;
@@ -360,6 +384,9 @@ App.UI.electiveSurgery = function() {
 			});
 		}
 
+		/**
+		 * @returns {HTMLAnchorElement} a link for breast shrinkage via flesh removal
+		 */
 		function breastShrinkageRelative() {
 			return surgeryLink("Have tissue removed", "breastShrinkage", () => {
 				V.PC.boobs -= 200;
@@ -367,6 +394,9 @@ App.UI.electiveSurgery = function() {
 			});
 		}
 
+		/**
+		 * @returns {HTMLAnchorElement} a link for breast implant installation
+		 */
 		function getImplants() {
 			return surgeryLink("Get a pair of breast implants", "breastEnlargementImplant", () => {
 				V.PC.boobs += 200;
@@ -387,6 +417,9 @@ App.UI.electiveSurgery = function() {
 			});
 		}
 
+		/**
+		 * @returns {HTMLAnchorElement} a link for the full removal of the breasts (flat as a board as they say)
+		 */
 		function flatChest() {
 			return surgeryLink("Have them removed", "flatChest", () => {
 				V.PC.boobs = 100;
@@ -394,6 +427,9 @@ App.UI.electiveSurgery = function() {
 			});
 		}
 
+		/**
+		 * @returns {HTMLAnchorElement} a link for that adds breasts to the player
+		 */
 		function breasts() {
 			return surgeryLink("Get a pair of breasts", "breasts", () => {
 				V.PC.boobs = 650;
@@ -402,6 +438,9 @@ App.UI.electiveSurgery = function() {
 		}
 	}
 
+	/**
+	 * Appends a div to `el` that lets the player remove belly fat
+	 */
 	function belly() {
 		const p = document.createElement("p");
 		const r = [];
@@ -498,6 +537,9 @@ App.UI.electiveSurgery = function() {
 		el.append(p);
 	}
 
+	/**
+	 * Appends a div to `el` that lets the player change their butt size
+	 */
 	function butt() {
 		const p = document.createElement("p");
 		const r = [];
@@ -561,6 +603,9 @@ App.UI.electiveSurgery = function() {
 		p.append(App.UI.DOM.makeElement("div", App.UI.DOM.generateLinksStrip(linkArray)));
 		el.append(p);
 
+		/**
+		 * @returns {HTMLAnchorElement} a link for removal of butt implants
+		 */
 		function buttReductionImplantRemove() {
 			return surgeryLink("Have your implants removed", "buttReductionImplant", () => {
 				V.PC.butt -= V.PC.buttImplant;
@@ -570,6 +615,9 @@ App.UI.electiveSurgery = function() {
 			});
 		}
 
+		/**
+		 * @returns {HTMLAnchorElement} a link for shrinkage of the butt via flesh removal
+		 */
 		function buttShrinkage() {
 			return surgeryLink("Have fat removed", "buttShrinkage", () => {
 				V.PC.butt -= 1;
@@ -577,6 +625,9 @@ App.UI.electiveSurgery = function() {
 			});
 		}
 
+		/**
+		 * @returns {HTMLAnchorElement} a link for enlargement of the butt via implant
+		 */
 		function buttEnlargementImplant() {
 			return surgeryLink("Get the next size up", "buttEnlargementImplant", () => {
 				V.PC.butt += 1;
@@ -585,6 +636,9 @@ App.UI.electiveSurgery = function() {
 			});
 		}
 
+		/**
+		 * @returns {HTMLAnchorElement} a link for enlargement of the butt via flesh
+		 */
 		function buttEnlargement() {
 			return surgeryLink("Add additional fatty tissue", "buttEnlargement", () => {
 				V.PC.butt += 1;
@@ -593,6 +647,9 @@ App.UI.electiveSurgery = function() {
 		}
 	}
 
+	/**
+	 * Appends a div to `el` that lets the player change their ball sack size
+	 */
 	function balls() {
 		const p = document.createElement("p");
 		const r = [];
@@ -701,6 +758,9 @@ App.UI.electiveSurgery = function() {
 		el.append(p);
 	}
 
+	/**
+	 * Appends a div to `el` that lets the player tighten their vagina and/or restore their hymen
+	 */
 	function vagina() {
 		const p = document.createElement("p");
 		const r = [];
@@ -780,6 +840,9 @@ App.UI.electiveSurgery = function() {
 		el.append(p);
 	}
 
+	/**
+	 * Appends a div to `el` that lets the player regenerate their ovaries
+	 */
 	function ovaries() {
 		const p = document.createElement("p");
 		const r = [];
@@ -795,6 +858,9 @@ App.UI.electiveSurgery = function() {
 		el.append(p);
 	}
 
+	/**
+	 * Appends a div to `el` that lets the player change their sex
+	 */
 	function sexType() {
 		const p = document.createElement("p");
 		const r = [];
@@ -993,7 +1059,7 @@ App.UI.electiveSurgery = function() {
 	/**
 	 *
 	 * @param {string} title
-	 * @param {string} type
+	 * @param {surgeryType} type
 	 * @param {function():void} func
 	 * @returns {HTMLAnchorElement}
 	 */
@@ -1007,6 +1073,10 @@ App.UI.electiveSurgery = function() {
 		);
 	}
 
+	/**
+	 * Appends a DocumentFragment to `el` that shows the result of the player's surgery
+	 * @param {surgeryType} type the type of surgery that was performed
+	 */
 	function showDegradation(type) {
 		V.nextButton = "Continue";
 		V.nextLink = "Manage Personal Affairs";
diff --git a/src/player/managePersonalAffairs.js b/src/player/managePersonalAffairs.js
index ea2a6de9fd9d9cd2621cf4b72a17196a8a5a817b..0e6808ffeb2546d9c8ff1f228b189e7c20d837dd 100644
--- a/src/player/managePersonalAffairs.js
+++ b/src/player/managePersonalAffairs.js
@@ -51,6 +51,9 @@ App.UI.managePersonalAffairs = function() {
 
 	return frag;
 
+	/**
+	 * @returns {HTMLDivElement} a constructed a div with the players appearance described
+	 */
 	function appearance() {
 		const doctorDiv = document.createElement("div");
 		const surgeonDiv = document.createElement("div");
@@ -90,6 +93,9 @@ App.UI.managePersonalAffairs = function() {
 
 		return appearanceDiv;
 
+		/**
+		 * @returns {HTMLDivElement} a constructed div with links to consult a doctor
+		 */
 		function doctor() {
 			const text = [];
 
@@ -104,6 +110,9 @@ App.UI.managePersonalAffairs = function() {
 			return doctorDiv;
 		}
 
+		/**
+		 * @returns {HTMLDivElement} a constructed div with links to visit a plastic surgeon
+		 */
 		function surgeon() {
 			const text = [];
 
@@ -126,12 +135,18 @@ App.UI.managePersonalAffairs = function() {
 			return surgeonDiv;
 		}
 
+		/**
+		 * @returns {HTMLDivElement} a constructed div with links to change the player's appearance
+		 */
 		function salon() {
 			salonDiv.append(App.UI.DOM.passageLink(`Change your appearance`, "Personal Appearance",));
 			return salonDiv;
 		}
 	}
 
+	/**
+	 * @returns {HTMLDivElement} a constructed div that contains items related to the players reputation (title, rumors, etc)
+	 */
 	function reputation() {
 		const customTitleDiv = document.createElement("div");
 		const textBoxDiv = document.createElement("div");
@@ -204,6 +219,10 @@ App.UI.managePersonalAffairs = function() {
 
 		return reputationDiv;
 
+		/**
+		 * Shows the player's custom title if they have one. Lets them set one if they don't
+		 * @returns {HTMLDivElement}
+		 */
 		function customTitle() {
 			if (!PC.customTitle) {
 				textBoxDiv.append(
@@ -242,7 +261,11 @@ App.UI.managePersonalAffairs = function() {
 			return customTitleDiv;
 		}
 
-		// TODO: waiting for 5.0 per pregmodder
+		/**
+		 * Lets the player set their preferred pronouns
+		 * TODO: waiting for 5.0 per pregmodder
+		 * @returns {HTMLDivElement}
+		 */
 		function pronouns() {
 			const options = new App.UI.OptionsGroup();
 			const {he, him} = getPronouns(V.PC);
@@ -256,6 +279,10 @@ App.UI.managePersonalAffairs = function() {
 			return pronounsDiv;
 		}
 
+		/**
+		 * Allows the player to rename themselves
+		 * @returns {HTMLDivElement}
+		 */
 		function renamePlayer() {
 			newNameDiv.append(
 				`New name: `,
@@ -273,6 +300,10 @@ App.UI.managePersonalAffairs = function() {
 			return renamePlayerDiv;
 		}
 
+		/**
+		 * Let the player know if there are rumors going around about them
+		 * @returns {HTMLDivElement}
+		 */
 		function rumors() {
 			App.UI.DOM.appendNewElement("h3", rumorsDiv, `Rumors`);
 
@@ -280,6 +311,9 @@ App.UI.managePersonalAffairs = function() {
 
 			return rumorsDiv;
 
+			/**
+			 * @returns {string} the correct rumor flavor text for the players degeneracy level
+			 */
 			function getPlayerRumors() {
 				if (PC.degeneracy > 100) {
 					return `There are severe and devastating rumors about you spreading across the arcology.`;
@@ -297,6 +331,9 @@ App.UI.managePersonalAffairs = function() {
 			}
 		}
 
+		/**
+		 * @returns {HTMLDivElement} a div with a link that shows the player's family tree
+		 */
 		function family() {
 			App.UI.DOM.appendNewElement("h3", familyDiv, `Family`);
 
@@ -309,6 +346,9 @@ App.UI.managePersonalAffairs = function() {
 			return familyDiv;
 		}
 
+		/**
+		 * @returns {HTMLDivElement} a div with options related to the player's pregnancy
+		 */
 		function pregnancy() {
 			const text = [];
 			const links = [];
@@ -442,6 +482,9 @@ App.UI.managePersonalAffairs = function() {
 			return pregnancyDiv;
 		}
 
+		/**
+		 * @returns {HTMLDivElement} a div with a detailed count of births the player has had
+		 */
 		function births() {
 			const babies = count => count === 1 ? `${count} baby` : `${count} babies`;
 
@@ -489,6 +532,9 @@ App.UI.managePersonalAffairs = function() {
 			return birthsDiv;
 		}
 
+		/**
+		 * @returns {HTMLDivElement} a div listing the player's sexual partners
+		 */
 		function partners() {
 			const text = [];
 
@@ -584,6 +630,9 @@ App.UI.managePersonalAffairs = function() {
 			return partnersDiv;
 		}
 
+		/**
+		 * @returns {HTMLDivElement} a div with the count of slaves the player has fathered and the amount of slaves they have knocked up
+		 */
 		function knockedUp() {
 			const text = [];
 
@@ -604,6 +653,9 @@ App.UI.managePersonalAffairs = function() {
 			return knockedUpDiv;
 		}
 
+		/**
+		 * @returns {HTMLDivElement} a div with the amount of slaves the player has fathered
+		 */
 		function fathered() {
 			const text = [];
 
@@ -618,6 +670,9 @@ App.UI.managePersonalAffairs = function() {
 			return fatheredDiv;
 		}
 
+		/**
+		 * @returns {HTMLDivElement} a div that allows the player to provide their womb for breeding by the Societal Elite
+		 */
 		function breeding() {
 			const text = [];
 
@@ -657,6 +712,9 @@ App.UI.managePersonalAffairs = function() {
 		}
 	}
 
+	/**
+	 * @returns {HTMLDivElement} a div allowing the player to change their diet
+	 */
 	function diet() {
 		App.UI.DOM.appendNewElement("h2", dietDiv, `Diet`);
 
@@ -907,6 +965,9 @@ App.UI.managePersonalAffairs = function() {
 		return dietDiv;
 	}
 
+	/**
+	 * @returns {HTMLDivElement} a div allowing the player to use drugs
+	 */
 	function drugs() {
 		const hormonesDiv = document.createElement("div");
 		const playerDrugsDiv = document.createElement("div");
@@ -926,6 +987,9 @@ App.UI.managePersonalAffairs = function() {
 
 		return drugsDiv;
 
+		/**
+		 * @returns {HTMLDivElement} a div listing hormonal drugs
+		 */
 		function hormones() {
 			App.UI.DOM.appendNewElement("h3", hormonesDiv, `Hormones`);
 			if (PC.hormones !== 0) {
@@ -961,6 +1025,9 @@ App.UI.managePersonalAffairs = function() {
 			return hormonesDiv;
 		}
 
+		/**
+		 * @returns {HTMLDivElement} a div listing drugs the player can use
+		 */
 		function playerDrugs() {
 			const consumerDrugsDiv = document.createElement("div");
 			const buyDrugsDiv = document.createElement("div");
@@ -989,6 +1056,9 @@ App.UI.managePersonalAffairs = function() {
 
 			return playerDrugsDiv;
 
+			/**
+			 * @returns {HTMLDivElement} a div listing consumer grade drugs the player can use
+			 */
 			function consumerDrugs() {
 				const text = [];
 				const links = [];
@@ -1188,6 +1258,9 @@ App.UI.managePersonalAffairs = function() {
 				return consumerDrugsDiv;
 			}
 
+			/**
+			 * @returns {HTMLDivElement} a div allowing the player to purchase a prescription drug license
+			 */
 			function buyConsumerDrugs() {
 				const drugsCash = 20000;
 				buyDrugsDiv.append(
@@ -1203,6 +1276,9 @@ App.UI.managePersonalAffairs = function() {
 				return buyDrugsDiv;
 			}
 
+			/**
+			 * @returns {HTMLDivElement} a div listing slave grade drugs the player can use
+			 */
 			function slaveDrugs() {
 				const text = [];
 				const links = [];
@@ -1630,6 +1706,9 @@ App.UI.managePersonalAffairs = function() {
 			}
 		}
 
+		/**
+		 * @returns {HTMLDivElement} a div that allows the player to stop taking labor suppressors
+		 */
 		function pregDrugs() {
 			const text = [];
 
@@ -1647,6 +1726,9 @@ App.UI.managePersonalAffairs = function() {
 			return pregDrugsDiv;
 		}
 
+		/**
+		 * @returns {HTMLDivElement} a div letting the player take aphrodisiacs
+		 */
 		function aphrodisiacs() {
 			const text = [];
 
@@ -1722,6 +1804,9 @@ App.UI.managePersonalAffairs = function() {
 		}
 	}
 
+	/**
+	 * @returns {HTMLDivElement} a div with options related to the players lactation or lack thereof
+	 */
 	function lactation() {
 		App.UI.DOM.appendNewElement("h2", lactationDiv, `Lactation`);
 
@@ -1844,6 +1929,9 @@ App.UI.managePersonalAffairs = function() {
 		return lactationDiv;
 	}
 
+	/**
+	 * @returns {HTMLDivElement} a div with text related to `Elite Breeder Qualifications`
+	 */
 	function breederExam() {
 		App.UI.DOM.appendNewElement("h2", breederExamDiv, `Elite Breeder Qualifications`);
 
@@ -1852,6 +1940,9 @@ App.UI.managePersonalAffairs = function() {
 		return breederExamDiv;
 	}
 
+	/**
+	 * @returns {HTMLDivElement} a div listing perverted things the player can do to themselves
+	 */
 	function perversions() {
 		const bloatingDiv = document.createElement("div");
 		const cumTapDiv = document.createElement("div");
@@ -1870,6 +1961,9 @@ App.UI.managePersonalAffairs = function() {
 			);
 		}
 
+		/**
+		 * @returns {HTMLDivElement} a div that allows the player to take their own virginity using a dildo
+		 */
 		function dildoSelf() {
 			const text = [];
 
@@ -1928,6 +2022,9 @@ App.UI.managePersonalAffairs = function() {
 			return bloatingDiv;
 		}
 
+		/**
+		 * @returns {HTMLDivElement} a div that lets the player impregnate themselves using the fluids from the dairy farm
+		 */
 		function cumTap() {
 			const text = [];
 
@@ -1990,6 +2087,9 @@ App.UI.managePersonalAffairs = function() {
 			return cumTapDiv;
 		}
 
+		/**
+		 * @returns {HTMLDivElement} a div that lets the player impregnate themselves if they have both a vagina and a dick
+		 */
 		function impregnateSelf() {
 			const text = [];
 
@@ -2035,6 +2135,9 @@ App.UI.managePersonalAffairs = function() {
 		return pervertDiv;
 	}
 
+	/**
+	 * @returns {HTMLDivElement} a div letting the player cancel their wedding and change how often they watch FCTV
+	 */
 	function socials() {
 		const weddingDiv = document.createElement("div");
 		const FCTVDiv = document.createElement("div");
@@ -2050,6 +2153,9 @@ App.UI.managePersonalAffairs = function() {
 
 		App.Events.addNode(socialDiv, text);
 
+		/**
+		 * @returns {HTMLDivElement} a div letting the player cancel their wedding
+		 */
 		function wedding() {
 			const text = [];
 
@@ -2081,6 +2187,9 @@ App.UI.managePersonalAffairs = function() {
 
 			return weddingDiv;
 
+			/**
+			 * @returns {HTMLSpanElement} a span listing all the slaves the player is marrying this week
+			 */
 			function marryingList() {
 				const listSpan = document.createElement("span");
 
@@ -2093,6 +2202,9 @@ App.UI.managePersonalAffairs = function() {
 			}
 		}
 
+		/**
+		 * @returns {HTMLDivElement} a div letting the player select how often they want to see FCTV
+		 */
 		function FCTV() {
 			const text = [];
 			const links = [];
@@ -2172,6 +2284,9 @@ App.UI.managePersonalAffairs = function() {
 		return socialDiv;
 	}
 
+	/**
+	 * @returns {HTMLDivElement} a div listing the current skill levels of the player
+	 */
 	function skills() {
 		App.UI.DOM.appendNewElement("h2", skillsDiv, `Personal Skills`);
 
@@ -2186,6 +2301,9 @@ App.UI.managePersonalAffairs = function() {
 
 		return skillsDiv;
 
+		/**
+		 * @returns {string}
+		 */
 		function getPlayerTradingSkill() {
 			if (PC.skill.trading >= 100) {
 				return `You are a master at economics and trading.`;
@@ -2212,6 +2330,9 @@ App.UI.managePersonalAffairs = function() {
 			}
 		}
 
+		/**
+		 * @returns {string}
+		 */
 		function getPlayerWarfareSkill() {
 			if (PC.skill.warfare >= 100) {
 				return `You are a master of warfare.`;
@@ -2238,6 +2359,9 @@ App.UI.managePersonalAffairs = function() {
 			}
 		}
 
+		/**
+		 * @returns {string}
+		 */
 		function getPlayerSlavingSkill() {
 			if (PC.skill.slaving >= 100) {
 				return `You are a master slaver.`;
@@ -2264,6 +2388,9 @@ App.UI.managePersonalAffairs = function() {
 			}
 		}
 
+		/**
+		 * @returns {string}
+		 */
 		function getPlayerEngineeringSkill() {
 			if (PC.skill.engineering >= 100) {
 				return `You are a master engineer.`;
@@ -2290,6 +2417,9 @@ App.UI.managePersonalAffairs = function() {
 			}
 		}
 
+		/**
+		 * @returns {string}
+		 */
 		function getPlayerMedicineSkill() {
 			if (PC.skill.medicine >= 100) {
 				return `You are a master surgeon.`;
@@ -2316,6 +2446,9 @@ App.UI.managePersonalAffairs = function() {
 			}
 		}
 
+		/**
+		 * @returns {string}
+		 */
 		function getPlayerHackingSkill() {
 			if (PC.skill.hacking >= 100) {
 				return `You are a master of hacking.`;
diff --git a/src/player/pcSurgeryDegradation.js b/src/player/pcSurgeryDegradation.js
index d4792074c86fe3e3dd0e44128106f3073f502a96..68c18d0dd7aad4967eeebfa9b1ffd0b18e524ec6 100644
--- a/src/player/pcSurgeryDegradation.js
+++ b/src/player/pcSurgeryDegradation.js
@@ -1,3 +1,11 @@
+/**
+ * @typedef {"skinTone"|"restoreFace"|"ageDown"|"ageUp"|"breastReductionImplant"|"breastShrinkage"|"breastEnlargementImplant"|"breastEnlargement"|"flatChest"|"breasts"|"buttReductionImplant"|"buttShrinkage"|"buttEnlargementImplant"|"buttEnlargement"|"ballEnlargement"|"ballShrinkage"|"ballEnlargementHorm"|"ballShrinkageHorm"|"ballBigShrinkage"|"tightPussy"|"reVirgin"|"herm2female"|"herm2male"|"herm2truefemale"|"herm2truemale"|"male2female"|"male2herm"|"male2truefemale"|"male2hermfemale"|"female2male"|"female2herm"|"female2truemale"|"female2hermmale"|"tummyTuck"|"ovulationRestart"} surgeryType
+ */
+
+/**
+ * @param {surgeryType} surgeryType the type of surgery to describe
+ * @returns {DocumentFragment} a DocumentFragment that shows the result of the player's surgery
+ */
 App.UI.PCSurgeryDegradation = function(surgeryType) {
 	const frag = new DocumentFragment();
 	let r = [];
diff --git a/src/pregmod/FCTV/FCTV.js b/src/pregmod/FCTV/FCTV.js
index 761d6085c7a7c41e34e255b886bd9f837e6f9fdf..cbec6183fb86c8aa655661bac778e462e5d8f7ea 100644
--- a/src/pregmod/FCTV/FCTV.js
+++ b/src/pregmod/FCTV/FCTV.js
@@ -29,6 +29,9 @@ globalThis.FCTV = (function() {
 		return [...App.Data.FCTV.channels.keys()];
 	}
 
+	/**
+	 * Initializes the V.FCTV.channel array
+	 */
 	function initChannels() {
 		const channelList = FCTV.channels();
 		for (let i = 0; i < channelList.length; i++) {
diff --git a/src/pregmod/FCTV/FCTVBC.js b/src/pregmod/FCTV/FCTVBC.js
index 6f431360ab08efb1cf1cd212d2576014e0987693..b30334d652d8ac3273f29462cccb647f52bd6ee2 100644
--- a/src/pregmod/FCTV/FCTVBC.js
+++ b/src/pregmod/FCTV/FCTVBC.js
@@ -5,6 +5,9 @@ App.Update.FCTV = function() {
 		return V.FCTVreceiver ? a : b;
 	}
 
+	/**
+	 * Modifying the V.FCTV.channel array for backwards compatibility
+	 */
 	function initChannels() {
 		const channelList = FCTV.channels();
 		for (let i = 0; i < channelList.length; i++) {