diff --git a/devNotes/encyclopedia.js b/devNotes/encyclopedia.js
index a170a469847cb6a8ca277bf4ea09feebabaaad00..7704f6ca9cde8992b7491e2dc4d063958d77d923 100644
--- a/devNotes/encyclopedia.js
+++ b/devNotes/encyclopedia.js
@@ -1,4 +1,4 @@
-// At the moment this is only meant to be used as a reference. DO NOT use otherwise the encyclopedia WILL be broken. 
+// At the moment this is only meant to be used as a reference. DO NOT use otherwise the encyclopedia WILL be broken.
 App.Encyclopedia.UI = function() {
 	const text = new DocumentFragment();
 	const r = new SpacedTextAccumulator(text);
@@ -16,8 +16,8 @@ App.Encyclopedia.UI = function() {
 	 * @api private
 	 */
 	const highlight = (text, tag=["bold"]) => App.UI.DOM.makeElement("span", text, tag);
-/*
-	const devotion = (text="devotion", colour="hotpink") => link(text, "From Rebellious to Devoted", colour);
+	/*
+	const devotion = (text="devotion", color="hotpink") => link(text, "From Rebellious to Devoted", color);
 	const trust = (text="trust") => link(text, "Trust", "mediumaquamarine");
 	const rep = (text="reputation") => link(text, "Arcologies and Reputation", "green");
 
@@ -25,7 +25,6 @@ App.Encyclopedia.UI = function() {
 	const unique = [link("Head Girl Suite"), link("Master Suite"), link("Farmyard"), link("Incubation Facility", "The Incubation Facility"), link("Pit")];
 	const naturalDoms = [link("Head Girl"), link("Madam"), link("Schoolteacher"), link("Stewardess"), link("Nurse")];
 	const spaConditions = [link("Healthy", "Health"), "happy", link("free of flaws.", "Flaws")];
-	const approvedDyes = ["blazing red", "neon green", "neon blue", "neon pink", "platinum blonde", "dark brown", "brown", "auburn", "black", "blonde", "blue", "burgundy", "chestnut", "chocolate", "copper", "ginger", "golden", "green", "grey", "hazel", "pink", "red", "blue-violet", "purple", "dark orchid", "sea green", "green-yellow", "dark blue", "jet black", "silver"];
 
 	if (!["Table of Contents", "Credits"].includes(V.encyclopedia)) {
 		indentLine([App.UI.DOM.generateLinksStrip([link("Table of Contents"), link("Credits")])]);
@@ -64,7 +63,7 @@ App.Encyclopedia.UI = function() {
 				indentLine([link("Slave Relationships", "Relationships")]);
 				indentLine([link("Slave Health", "Health")]);
 				indentLine([link("Slave Pregnancy", "Pregnancy"), "/", link("Inflation")]);
-				indentLine([link("Slave Modification", "Slave Modification")]);
+				indentLine([link("Slave Modification")]);
 				App.Events.addParagraph(text, []);
 
 				indentLine(["Your Arcology"], "h3");
@@ -846,1039 +845,6 @@ App.Encyclopedia.UI = function() {
 				r.push("Variety bonuses, if any, will be called out in the facility report at the end of the week.", link("Advertising"), "that the facility specializes in any of these areas will supersede variety bonuses for the related qualities. Staffing a facility to appeal to all tastes can be more challenging than building a homogeneous stable and advertising it, but is both powerful and free.");
 				r.toParagraph();
 				break;
-			// LORE: THE FREE CITIES TODAY
-			case "Lore":
-				r.push(highlight("Future room for lore text", ["note"]));
-				r.toParagraph();
-				r.push("Choose a more particular entry below:");
-				r.toNode("div");
-				break;
-			case "Money":
-				r.push("Digital currencies have come a long way in the past twenty years. From the poorly managed, excessively ideological, incompetently run experiments whose failures inspired years of public skepticism, they have matured into a reliable means of exchange. The technical details are unimportant for all but students of economics, since broad diversification and clever design have made them reliable and stable means of exchange. With so many old world currencies collapsing, they are coming to dominate world commerce at last.");
-				r.toNode("div", ["note"]);
-
-				r.push(`The diversified bundle of assets that constitutes the unit of exchange that allows the Free Cities to function is commonly referred to as the "credit" and denoted in print by a ¤ symbol. It is unusually valuable for a basic monetary unit, but the extreme wealth concentration seen in most of the Free Cities makes this a feature rather than a flaw. Estimating its value is extremely difficult, since the value of goods and services varies wildly between Free Cities, and even more wildly between any given Free City and the surrounding old world.`);
-				r.toNode("p", ["note"]);
-
-				r.push("Direct comparisons of purchasing power across long gulfs of time are often unscientific. Such comparisons usually rely on indexing currencies to a good or a market basket of goods, ignoring the constant shifts in the value of goods and services throughout history. The best that a responsible economist can do for a historical value of the ¤ is to give a range. Depending on the index good, the 2037 ¤ can be argued to be worth anywhere between thirty and several hundred US dollars.");
-				r.toNode("p", ["note"]);
-
-				r.push(`— St. Croix, Marianne, "Digital Currencies: A Review,"`, highlight("Journal of Economics, March 2037", ["note"]));
-				r.toNode("p", ["note"]);
-				break;
-			case "Food":
-				r.push("An army marches on its stomach. Likewise, an arcology cannot function without sustenance.");
-				r.toNode("div", ["note"]);
-				r.push("Please expand this. I'm not good at writing lore. — DCoded");
-				r.toNode("div", ["note"]);
-				break;
-			case "Disease in the Free Cities":
-				r.push("In light of some recent alarmism, it's time for the medical profession to clear the air about diseases.");
-				r.toNode("div", ["note"]);
-
-				r.push("Over the course of the 21st century, diseases and disease treatments have become more powerful, side by side. New disease vectors, antibiotic resistances, and even malicious engineering have combined to make infectious agents tougher. However, medicine has advanced as well, with distributed fabrication techniques and genetic sequencing making tailored drugs widely available to those with the resources to afford them.");
-				r.toNode("p", ["note"]);
-
-				r.push("This sounds like balance. In the old world, however, it looks like the bugs may be winning. Life expectancy is beginning to settle to pre-antibiotic levels. Meanwhile, in the Free Cities, medicine is", link("nymphomania:", "Nymphomania"), "better health care and the ubiquity of modern medicine have nearly eliminated disease as a day-to-day concern.");
-				r.toNode("p", ["note"]);
-
-				r.push("If you want simple advice, here it is: fuck your Free Cities slaves bareback, but wrap up if you visit the old world.");
-				r.toNode("p", ["note"]);
-
-				r.push("— Dodgson, Jane Elizabeth,", highlight("FC Med Today, March 25, 2032", ["note"]));
-				r.toNode("p", ["note"]);
-				break;
-			case "Free Cities Justice":
-				r.push("The Free Cities are not lawless.");
-				r.toNode("div", ["note"]);
-
-				r.push("The only law respected across all Cities is the enforcement of contracts. Some Cities have limited regulation of other areas, but in general, the only justice available comes when a contract has been breached.");
-				r.toNode("p", ["note"]);
-
-				r.push("Different Cities have taken different approaches to the obvious problem of dealing with criminal conduct, which in the old world breaks no traditional contract. The most common approach is to require everyone to sign contracts with the owners of their homes and workplaces to commit no crimes while there. In this way, what would be murder in the old world is a breach of the contract with one's landlord not to murder on his property.");
-				r.toNode("p", ["note"]);
-
-				r.push("Penalties for such conduct are usually left to the imagination of the property owner. With the traditional roles of judge, jury, and jailer concentrated into the hands of a single wealthy person, rich potentates of the Cities hold more personal power over their tenants than anyone since the great feudal lords seven centuries ago.");
-				r.toNode("p", ["note"]);
-
-				r.push("— Torstein, Jens Learned,", highlight("The Modern Libertarian Paradise, March 25, 2032", ["note"]));
-				r.toNode("p", ["note"]);
-				break;
-			case "Modern Anal":
-				r.push("The modern acceptance and frequency of heterosexual anal sex has only increased with the return of slavery.");
-				r.toNode("div", ["note"]);
-
-				r.push("There are numerous reasons for this. First and most obviously, the fact that many men now own women and can thus dictate sexual relations has popularized a sex act that has always appealed to many men. Second, the extremely libertine culture of the Free Cities has placed slaveowners in a perpetual contest with one another for sexual decadence; voluntarily //not// using a slave in all possible manners is considered unusual and even prudish. Third, the assignment of some persons born without natural vaginas to status as female sex slaves has served to make standard the use of the orifice that all slaves, regardless of biological particulars, share in common.");
-				r.toNode("p", ["note"]);
-
-				r.push("Finally, the development of the now-common slave diet has played a part. In addition to providing slaves with bland, featureless and mildly aphrodisiac nutrition, standard slave nutriment is a cleverly designed liquid diet that almost completely stops the normal digestive processes that might interfere with sex of this kind.");
-				r.toNode("p", ["note"]);
-
-				r.push("— Lawrence, W. G.,", highlight("Guide to Modern Slavery, 2037 Edition", ["note"]));
-				r.toNode("p", ["note"]);
-				break;
-			case "Slave Couture":
-				r.push("My name is Danni Diemen, and I'm here today to talk about your slaves' clothes.");
-				r.toNode("div", ["note"]);
-
-				r.push("Let's break it right down into categories, shall we?");
-				r.toNode("p", ["note"]);
-
-				r.push(highlight("First, clothes for your disobedient bitches."), "We must keep them uncomfortable, yes? The old reliable is", highlight("slave clothes", ["note"]) + ",", "sometimes referred to as straps. These give her that sex slave allure while keeping her nice and uncomfortable. You can also go for full coverage with", highlight("latex", ["note"]), ". A suit of that will keep her totally reliant on your little whims.", highlight("Plugs", ["note"]), "are nice sturdy leather affairs with inward-facing dildos for all the holes — and I do mean all. They're good stuff for breaking a bitch, and she might even learn to take dick a bit better! Word to the wise: not a good idea if you want those holes tight, though. Finally,", highlight("corsets", ["note"]), ". These will make life tough, but that's good for a", devotion("rebellious", "orangered"), "little cunt, no? And corseting might just narrow that waist. But never mind, on to my favorites.");
-				r.toNode("p", ["note"]);
-
-				r.push(highlight("Second, nice attire for your prize stock."), "These clothes will keep your good slaves happy. You know, women out in the old world still wear", highlight("attractive lingerie", ["note"]), "UNDER clothing? Absurd. It's lovely on it's own. If you're looking to be a bit more fun and a bit less classy, go for", highlight("string lingerie", ["note"]), "instead. You could even let her choose her own", highlight("slutty outfits", ["note"]) + ";", "watching livestock dress itself is always good fun. When you can afford proper", highlight("slutty jewelry", ["note"]) + ",", "who needs clothes? I suggest accenting heavy piercings with this. For your hookah fanatics and decadent harem masters, there's", highlight("sheer gauze", ["note"]) + ".", "Makes even a clumsy girl look like she's dancing to a zither.");
-				r.toNode("p", ["note"]);
-
-				r.push("Finally,", highlight("chastity belts", ["note"]) + ".", "Hard to categorize. Different bitches react in different ways to having the front door locked. Depends on how much traffic goes in the back, I find.");
-				r.toNode("p", ["note"]);
-
-				r.push("— Van Diemen, D. C. G.,", highlight("Free Cities Fashion (FCF), March 2032", ["note"]));
-				r.toNode("p", ["note"]);
-				break;
-			case "Slave Marriage":
-				r.push("Marriage between slaves is one of the facets of slave culture that has varied the most between historical slave societies. Many forbade it entirely, considering it a source of sedition. Others permitted it, but accorded it little force of law. A few have offered it some limited protections even against the slaveowner's will.");
-				r.toNode("div", ["note"]);
-
-				r.push("Most Free Cities fall into the middle case. Many slaveowners find it amusing to permit their slaves to form and even formalize long term relationships. Slave wives are often permitted to live and work together, sharing a little room and enjoying some measure of sexual exclusivity. Of course, it is just as common for slave wives to be marketed together in brothels.");
-				r.toNode("p", ["note"]);
-
-				r.push("To date, none of the Free Cities has extended any real legal protection to slave marriages. There is nothing to stop a slaveowner from separating slave wives by sale.");
-				r.toNode("p", ["note"]);
-
-				r.push("— Lawrence, W. G.,", highlight("Guide to Modern Slavery, 2037 Edition", ["note"]));
-				r.toNode("p", ["note"]);
-				break;
-			case "The Ejaculate Market":
-				r.push("Fun has a price.");
-				r.toNode("div", ["note"]);
-
-				r.push("Understanding this is the only way to understand some emerging markets in the Free Cities. This maxim often receives criticism from the uninformed, but all it means is that enjoyment is a good (or service) that can be bought and sold like any other. The market for exotic varieties of fun has never been more open than it is right now.");
-				r.toNode("p", ["note"]);
-
-				r.push("The forming market for ejaculate can only be understood in this context. In the old world, a thriving market for semen for insemination purposes has been thriving for a long while. In the Free Cities, however, homogenized ejaculate is now available in quantities and at prices that make it obvious that it's being put to other uses. Semen is nutritionally marginal; it has some cosmetic applications, but like every other natural cosmetic it has long since been eclipsed by artificial means. The only possible explanation is that many citizens of the Free Cities find various combinations of slaves and large volumes of ejaculate an amusing combination.");
-				r.toNode("p", ["note"]);
-
-				r.push("Anecdotes abound. Some slaveowners claim that using it as a dietary additive with the knowledge of their slaves enforces an extra layer of degradation and sexual servitude while habituating the unfortunates to oral sex.");
-				r.toNode("p", ["note"]);
-
-				r.push("— Editorial,", highlight("FC Daily Economic Report, October 13, 2031", ["note"]));
-				r.toNode("p", ["note"]);
-				break;
-			case "Gingering":
-				r.push("Like much of the traditional husbandry terminology, 'gingering' is a term whose meaning in the Free Cities is slowly diverging from its original old world definition. In animal husbandry, especially of horses, gingering is the nearly extinct practice of placing an irritant compound (traditionally ginger, hence the term) inside one of the animal's orifices, typically the anus, in order to make the animal step high, be sprightly, and generally behave energetically due to the discomfort. Though it was sometimes used at shows and competitions, the usual application was to make the animal seem more valuable for sale.");
-				r.toNode("div", ["note"]);
-
-				r.push("In the Free Cities, 'gingering' is coming to mean any drugging or other temporary adulteration of a slave in order to make her seem more valuable. For poorly broken slaves, stimulants and depressants are both common. These can be applied to make a resistant slave seem less", devotion("rebellious,"), "or a terrified slave more", trust("trusting,"), "though of course this is unreliable.");
-				r.toNode("p", ["note"]);
-
-				r.push("More traditional gingering is also sometimes applied. Many new slaves will naturally present their buttocks if an anal irritant is administered in an attempt to relieve the uncomfortable area. Novices to the slave markets may mistake this for sexual promiscuity, though few experienced brokers are likely to be misled, a clue as to why few experienced brokers seriously oppose gingering.");
-				r.toNode("p", ["note"]);
-
-				r.push("Some markets attempt to stamp out the practice, but most do not. It is generally accepted as permissible gamesmanship on the part of slave vendors, part of the natural skirmishing between buyers and sellers. In some areas it may even be considered lazy and even offensive for a seller to not doctor his human wares: it denies the buyer an opportunity to exercise his acumen in discovering what has been administered, and might even indicate that the seller is not making an effort in more important areas, too. Finally, many in the Free Cities might ask what proper slave dealer would willingly forgo the amusing sight of a girl bouncing with discomfort because someone has just roughly inserted a finger coated with ginger oil into her rectum.");
-				r.toNode("p", ["note"]);
-
-				r.push("— Lawrence, W. G.,", highlight("Guide to Modern Slavery, 2037 Edition", ["note"]));
-				r.toNode("p", ["note"]);
-				break;
-			case "Dyes":
-				r.push(`Fantastic news for every fashion oriented citizen and slaveowner: Your slave's hair color must no longer be exclusively chosen by one the bland authority-approved colors: ${toSentence(approvedDyes)}.`);
-				r.toNode("div", ["note"]);
-
-				r.push(`Today, we are proud to announce that our, the Free Cities Dyes Department, Research and Development team, found 140 new and exciting ways to color your slave's capital hair. The <a target="_blank" href="https://www.w3schools.com/colors/colors_names.asp">extensive list</a> with the names of all the available colors will be made available to the public, soon.`);
-				r.toNode("p", ["note"]);
-
-				r.push(`Please be aware, when you place your order on a custom dye, your description should be precise. Preparing, mixing and shipping is a fully automated process. You may put spaces into the color name. For example, "dark violet" will be handled as "darkviolet". Be sure to put the desired color at the beginning of your description. "Dark violet with silver highlights" is a solid description. Avoid anything too exotic or convoluted. With a description like "weird-ass color with a reddish tint", you will probably end up with red hair. Our guesswork is only so good.`);
-				r.toNode("p", ["note"]);
-
-				r.push("We hope to extend the applicability to body hair and even skin in the near future, too.");
-				r.toNode("p", ["note"]);
-
-				r.push(`- Free Cities Dyes Department R&amp;D, "Announcing exciting Dyes of the Future,"`, highlight("Press Conference, January 7th 2037", ["note"]));
-				r.toNode("p", ["note"]);
-				break;
-			// LORE: FREE CITIES CULTURE TOMORROW
-			case "The New Rome":
-				r.push(highlight("SCFC", ["note"]));
-				r.toNode("div", ["note"]);
-				indentLine([`— Free Cities armor pauldron inscription; "Slaveholders and Citizens of the Free Cities"`], ["note"]);
-
-				r.push("In the Free Cities, Rome is come again.");
-				r.toNode("p", ["note"]);
-
-				r.push("No people before or since have influenced modern society so deeply as the Romans. The Free Cities are, in return, emulating the Romans more deeply than any other society since their time. Based on the writings, great and low, that have come down to us from that innovative, grasping, and deeply licentious people, it seems that the Romans would likely approve of their posterity.");
-				r.toNode("p", ["note"]);
-
-				r.push("Fine historical parallels are probably lost on the person with XY chromosomes who is brought to the Free Cities, enslaved, treated thenceforth as female, and expected to behave as female on pain of severe punishment (sometimes with gender reassignment surgery to match, but often without). This redefinition of gender is common in the Free Cities: being penetrated makes one female, while penetrating makes one male. It almost certainly arose as a way for citizens to partake in all that a slave society has to offer, sexually, without reconsidering their own sexual identity. It is not identical to Roman sexual mores, but the Romans are the closest precedent.");
-				r.toNode("p", ["note"]);
-
-				r.push("This new and evolving system of sexual values does not free citizens from all expectations. Quite to the contrary, many find it just as restrictive as old world values, although differently so. For example, a naturally heterosexual female arcology owner who indulges in vanilla sex with masculine slaves will typically find her strength and acumen being questioned for no other reason than that she permits slaves to penetrate her.");
-				r.toNode("p", ["note"]);
-				indentLine(["— Lawrence, J. K., and Bolingbroke, D. S.,", highlight("Trends in Free Cities Culture, 2031", ["underline"]), highlight("Journal of Modern Social Sciences, International Edition, February 2032", ["note"])], "p", ["note"]);
-				break;
-			case "The Return of Feudalism":
-				r.push("By the Powers invested in me by the Board of Directors and the Rightful Executive Lord of Arcology F-8, His Majesty King William the First, I proclaim you a Knight, and grant you the right to two slaves, a monthly stipend of six hundred credits and one unit of stock in the Arcology, and the authority to bear a noble Coat of Arms...");
-				r.toNode("div", ["note"]);
-				indentLine([highlight("— Count Felix II von Feight, Knighthood Ceremony recorded in 2032", ["note"])]);
-
-				r.push("Once thought to have been a relic of an ancient, less enlightened time, the simultaneously decentralized and individual-focused corporate power structures of the Free Cities has led to the return of feudal power structures. For many arcologies, this has simply occurred without attention or fanfare, as increasingly serf-like underclasses accept the domination of ever-more-powerful executives and elites; some arcologies, such as F-8, have manifested entire, complex new social systems involving 'Kings' and 'Emperors' from which all corporate authority flows.");
-				r.toNode("div", ["note"]);
-
-				r.push("Originally the idea of an individual crowning himself absolute 'Emperor' of a free city seemed absurd, or even totalitarian, and the first Free City petty kings were met with mockery. This mocking tone appears to have quickly faded from popular Free Cities culture, however, likely due to the realization that new 'Imperial' power structures came with a host of benefits to the wealthy and elite of the arcology that adopts them.");
-				r.toNode("div", ["note"]);
-
-				r.push("More than simply being rich, the elites of Neo-Feudal, or Neo-Imperial arcologies dub themselves 'Barons' and 'Counts', putting themselves not only monetarily but also socially above the common masses and giving those who hold seats on boards of directors or invest stock in the arcology a physical advantage over their benighted underlings. To the common citizen, the result is ultimately the same, as a factory worker remains a peasant whether he's known as a serf or a citizen. But to the wealthy and distinct within the arcology, the new Feudalism creates a long list of titles and accomplishments to jockey for, manifesting a strange new culture in which junior executives compete with one another for the attention of outright 'Kings' in the hope of one day acquiring the limitless prestige felt by the select caste of neo-Imperial nobility.");
-				r.toNode("div", ["note"]);
-
-				indentLine(["— Lawrence, J. K., and Bolingbroke, D. S.,", highlight("Trends in Free Cities Culture, 2031", ["underline"]), highlight("Journal of Modern Social Sciences, International Edition, February 2032", ["note"])], "div", ["note"]);
-				break;
-			case "Naked, Barefoot, and Pregnant":
-				r.push("...and helpless, and illiterate, and dependent...");
-				r.toNode("div", ["note"]);
-				indentLine(["— Anonymous slaveowner, on the ideal woman"], "div", ["indent", "note"]);
-
-				r.push("It must be admitted that some of the boldest statements of early 21st century social justice advocates are now receiving some justification in the Free Cities. A tourist visiting some of the more notorious arcologies is given a public, in-person lesson in precisely what some men are willing to do with women they own. For every misogynist credo there is a Free Cities slaveowner putting it into practice.");
-				r.toNode("p", ["note"]);
-
-				r.push("Recent reactionism spawned by 20th century social movements pales in comparison to traditionalism, however. Reactionaries of the early 21st century may have breathlessly taken some extreme positions, but for a return to traditional values, true traditionalists have proven themselves to be the unquestioned masters. There are certainly arcologies in which no free women are permitted. The authors recommend that anyone inclined to hold such arcologies up as the extreme by which all others are to be judged should first visit one of the few arcologies in which no free women are permitted,", highlight("and", ["note"]), "no contraceptives of any kind are permitted, either.");
-				r.toNode("p", ["note"]);
-				indentLine(["— Lawrence, J. K., and Bolingbroke, D. S.,", highlight("Trends in Free Cities Culture, 2031", ["underline"]), highlight("Journal of Modern Social Sciences, International Edition, February 2032", ["note"])], "p", ["indent", "note"]);
-				break;
-			case "The Top":
-				r.push("The Master never beats me half as hard as the Head Girl. She fucks me harder, too.");
-				r.toNode("div", ["note"]);
-				indentLine(["— Anonymous slave"], "div", ["indent", "note"]);
-
-				r.push("The safest slave society is a stratified slave society. Innovative Free Cities slaveowners are carefully differentiating their chattel, ensuring that favored slaves are interposed between them and the masses of their lesser stock. This is one of the oldest principles of leadership, ensuring that the grind of day-to-day direction and correction comes from subordinate leaders, while rewards and planning come from the top. The addition of sexuality to this model simply means that many Free Cities slaves get it, so to speak, from both ends.");
-				r.toNode("p", ["note"]);
-
-				r.push("There can be great advantages for talented and hardworking slaves. Out in the old world, crime, war, natural disasters, and simple crushing want often strike with little distinction based on", highlight("intelligence", ["cyan"]), "skill, or strength. A truly excellent individual serving in a well-thought-out arcology can rise to a position of considerable", trust(), "and power on her merits. It would be foolish to over-romanticize the reality of slavery, however, for all that advancement rests entirely on the whim of her owner. Talent can count for little for girls unlucky enough to find themselves owned by a capricious master.");
-				r.toNode("p", ["note"]);
-				indentLine(["— Lawrence, J. K., and Bolingbroke, D. S.,", highlight("Trends in Free Cities Culture, 2031", ["underline"]), highlight("Journal of Modern Social Sciences, International Edition, February 2032", ["note"])], "p", ["indent", "note"]);
-				break;
-			case "The Bottom":
-				r.push("Public servant today, whore tomorrow, glory hole bitch next month.");
-				r.toNode("div", ["note"]);
-				indentLine(["— Anonymous slave"], "div", ["indent", "note"]);
-
-				r.push("Slaves at the top of the Free Cities hierarchy enjoy a standard of life far above the average free citizen of the old world. However, slaves at the bottom do not. As the Free Cities redefine what it means to be human, they can be extraordinarily callous to those people who are excluded from the new rubric.");
-				r.toNode("p", ["note"]);
-
-				r.push("Free Cities glory holes are perhaps the ultimate expression of the dark side of modern slavery. In the old world, glory holes were mostly a sexual fantasy, and were confined to certain sexual subcultures where they did exist in reality. Free Cities glory holes are different both in that they exist, and are indeed very common; and in that their occupants are almost never present voluntarily.");
-				r.toNode("p", ["note"]);
-
-				r.push("Glory holes and slave brothels have a symbiotic existence, and any Free Cities slaveholder who owns a brothel full of pampered prostitutes who claims moral ascendancy for not owning an arcade is ignoring realities. In truth, all slave brothels benefit from the existence of arcades. After all, every slave whore in the Free Cities knows that if she does not perform up to her Master's standards, the arcades exist as a way of extracting value from her body. Every slave brothel receives better efforts out of its slaves due to their knowledge that a worse alternative is always available — if not with their current master, then with some other.");
-				r.toNode("p", ["note"]);
-				indentLine(["— Lawrence, J. K., and Bolingbroke, D. S.,", highlight("Trends in Free Cities Culture, 2031", ["underline"]), highlight("Journal of Modern Social Sciences, International Edition, February 2032", ["note"])], "p", ["indent", "note"]);
-				break;
-			case "The Sons of Sekhmet":
-				r.push("Bhalwi al-sham asmik qalbik, abna Sakhmat damkun. (By the Sun I grasp your Heart, the Sons of Sekhmet have your Blood.)");
-				r.toNode("div", ["note"]);
-				indentLine(["— Mantra, unknown author"], "div", ["indent", "note"]);
-
-				r.push(`Described as the "logical continuation of terrorism within the new world" by a prominent arcology owner, The Sons of Sekhmet are a global terrorist organization notorious for its viciousness and worldwide strike capacity. Formed in 2018 by Quati ibn Malek, the leader of a relatively minor sect of cat worshippers within Egypt, the Sons gained notoriety for seizing one of the first arcology clusters in the Sahara Desert and defending it from multiple incursions by old world peacekeeping forces. Ibn Malek was successfully assassinated by the Egyptian government in 2024, but the Sons have been resilient to being dislodged from their desert stronghold, and have used the resources of an arcology cluster to expand their presence and doctrine onto the global stage.`);
-				r.toNode("p", ["note"]);
-
-				r.push(`Their use of cell tactics and frequent insurgent action against arcology owners has led to comparisons with the Daughters of Liberty, but this is a misguided comparison. Where the Daughters are an ideologically-motivated anti-slavery organization, the Sons long ago cast off their ideological roots to adopt a brutal, pragmatic approach to terrorism with few considerations other than the expansion of their own power; Sekhmet cells frequently use slaves as footsoldiers and suicide bombers, but their primary approach to recruitment is with the poor and downtrodden of arcologies and old world nations. Basic Sons doctrine holds that the Old World was destroyed by wealthy, hedonistic plutocrats who have fled their failed nations to the arcologies to live out lives of decadence as the world they shattered collapses, leaving the "common people" to starve in their wake. This simple mantra attracts disgruntled individuals from around the world, and the Sons maintain an extremely online presence, with underground cells active in nearly every old world nation.`);
-				r.toNode("p", ["note"]);
-
-				r.push("The capability of the Sons to provide manufactured weaponry and training, and their willingness to do so to anyone willing to pledge their life to the Orange Sun, makes them exceptionally dangerous. The Sons seize any possible oppurtunity to expand their wealth and power, and frequently launch assassination attempts on prominent public figures, sabotauge essential facilities, and attempt to stir chaos and unrest in vulnerable regions, often with the intent of stepping in and seizing power for themselves once the area has been sufficiently destabilized. Unlike many smaller-scale terrorist groups, the Sons produce some of the best-trained killers and thugs in the New World, and lie almost completely out of the reach of old world nations and arcology owners alike in their scorching desert arcology. Any responsible arcology owner should be aware of the orange sun used as the logo of the Sons of Sekhmet and take care to not expose themselves to any weakness.");
-				r.toNode("p", ["note"]);
-				indentLine(["— Lawrence, J. K., and Bolingbroke, D. S.,", highlight("Trends in Free Cities Culture, 2031", ["underline"]), highlight("Journal of Modern Social Sciences, International Edition, February 2032", ["note"])], "p", ["indent", "note"]);
-				break;
-			case "The Purity of the Human Form":
-				r.push("Twentieth century eugenicists weren't wrong, they just didn't have the tools to be right.");
-				r.toNode("div", ["note"]);
-				indentLine(["— Anonymous"], "div", ["indent", "note"]);
-
-				r.push("High quality Free Cities slaves are remarkably healthy. It should be unsurprising that a population of humans selected for beauty, fed perfectly, required to exercise, given modern medical care, and prevented from indulging any non-sexual excess at all, has become quite impressive in this regard. The cultural fallout of this has been less easy to predict.");
-				r.toNode("p", ["note"]);
-
-				r.push("Throughout the early part of the 21st century a wide spectra of movements were taking place that have informed the Free Cities ideology of body purism. The left-wing counterculture health movement has found much open ground in a society that allows its adherents to totally control what goes into the bodies of some of its members. On the opposite side of the spectrum, some long-standing reactionary groups have taken this opportunity to experiment with some of their non-racial theories on purity. Finally, many religious or simply moral fundamentalists who believe in some form of purity code now have a captive population to subject to their whims.");
-				r.toNode("p", ["note"]);
-
-				r.push("Thousands of unintentional experiments on what really makes the ideal human are now under way in the Free Cities, and whatever the balance of humanity may feel about their morality, it is hard to deny that we as a whole stand to benefit from the experimentation.");
-				r.toNode("p", ["note"]);
-				indentLine(["— Lawrence, J. K., and Bolingbroke, D. S.,", highlight("Trends in Free Cities Culture, 2031", ["underline"]), highlight("Journal of Modern Social Sciences, International Edition, February 2032", ["note"])], "p", ["indent", "note"]);
-				break;
-			case "A World Built on Implants":
-				r.push("The earlier a slave gets on advanced growth hormones, the better. After all, good-looking implants are a ratio game. The bigger a girl's natural tits are, the bigger implants she can get without looking ridiculous.");
-				r.toNode("div", ["note"]);
-				indentLine(["— standard Free Cities surgical advice"], "div", ["indent", "note"]);
-
-				r.push("One of the most furious ideological divides in the Free Cities is over implants. Most Free Cities arcologies display a mix of slaves with breast and other implants, but some follow the tastes of owners who strongly prefer all-natural slaves, and some fetishize expansionism to the point of near-universal implantation. This can be a remarkably bitter controversy in places, and should Free Cities culture continue to develop, it is not unlikely that some day physical violence may take place in the Free Cities between extremists on opposite sides of the implant debate.");
-				r.toNode("p", ["note"]);
-
-				r.push("In any case, the medical technology of implantation has not advanced hugely since the start of the 21st century. The vast majority of implants are still either water-bag or silicone, with silicone generally preferred for its better, more realistic feel. At the more extreme sizes, a variety of fluid-based designs are used, with polypropylene string implants making a return, and newer, fillable adaptive implants becoming more common.");
-				r.toNode("p", ["note"]);
-				indentLine(["— Lawrence, J. K., and Bolingbroke, D. S.,", highlight("Trends in Free Cities Culture, 2031", ["underline"]), highlight("Journal of Modern Social Sciences, International Edition, February 2032", ["note"])], "p", ["indent", "note"]);
-				break;
-			case "Slaves as Stock":
-				r.push("Here we have a fine piece for the dairy folks");
-				r.toNode("div", ["note"]);
-				r.push("Fine dairy cow for you here ladies and ge-entlemen");
-				r.toNode("div", ["note"]);
-				r.push("Who'll give me ten thousand ¤?");
-				r.toNode("div", ["note"]);
-				r.push("Ten thousand ¤ bid, now ten thousand five,");
-				r.toNode("div", ["note"]);
-				r.push("Now ten thousand five, will you give me eleven?");
-				r.toNode("div", ["note"]);
-				r.push("Thirty-two years old, nipples the size of silver dollars");
-				r.toNode("div", ["note"]);
-				r.push("Eleven thousand ¤ bid, eleven, eleven?");
-				indentLine(["— Free Cities auctioneer"], "div", ["indent", "note"]);
-
-				r.push("At different points in the history of slavery, slaves have been nearly equal to or even in some cases superior to the lowest classes of free citizen, and have been nearly as low as or even lower than the most valuable categories of animal livestock. Which will become the Free Cities norm remains to be seen; there are arcologies that exemplify either approach. A few arcologies apply both standards, and standards in between, all at once.");
-				r.toNode("p", ["note"]);
-
-				r.push("The present, however, is a time of great supply in the slave market. The social collapse of many societies in the old world and the perpetual conflicts in many areas are producing an immense number of captives for sale, keeping prices at historically low levels. Many slaveowners treat their chattel relatively well, but this comes from motivations other than financial necessity. With no laws requiring it and no economic reason to treat slaves as different from livestock, many citizens of the Free Cities see little reason to make a distinction. Spectacular expressions of this callousness, like the restraint of women for use as milk production devices or the usage of dangerous dosages of growth hormones, become more understandable when one realizes that the Free Cities are refining what was once a settled idea: what it means to be human.");
-				r.toNode("p", ["note"]);
-				indentLine(["— Lawrence, J. K., and Bolingbroke, D. S.,", highlight("Trends in Free Cities Culture, 2031", ["underline"]), highlight("Journal of Modern Social Sciences, International Edition, February 2032", ["note"])], "p", ["indent", "note"]);
-				break;
-			case "Slavery and the Physical Ideal":
-				r.push("Quoth BRODIN:");
-				r.toNode("div", ["note"]);
-				r.push("All must lift.");
-				r.toNode("div", ["note"]);
-				indentLine(["— Anonymous"], "div", ["indent", "note"]);
-
-				r.push("The medical impacts of the widespread reintroduction of slavery are not at all what might have been predicted twenty years ago. Medicine is not our primary focus in this review of Free Cities cultural trends, but a brief look at the striking medical outcomes is critical to understanding some of the social currents at work. By the second half of the twentieth century, the majority of humanity had reached a state of plenty so great that the health dangers of excess were greater than the health dangers of want.");
-				r.toNode("p", ["note"]);
-
-				r.push("For the first time in modern memory, people — slaves — in the Free Cities are, in large numbers, doing exactly what their doctors recommend. Properly managed slaves eat right, exercise regularly, and do not smoke, drink, or do recreational drugs. These simple but revolutionary changes mean that the more valuable classes of slave are healthier, on average, than any group of human beings has ever been.");
-				r.toNode("p", ["note"]);
-
-				r.push("Naturally, fetishism, competitiveness, and leisure have intersected to create in the Free Cities a constant escalation of physical one-upmanship when it comes to the training of slaves. Wonderfully muscled specimens have become very common, with feats of athletic prowess cited alongside sexual accomplishments without any distinction. The arcology owners most", devotion("devoted"), "to the human form are creating societies of uniform physical perfection unlike anything in human history.");
-				r.toNode("p", ["note"]);
-				indentLine(["— Lawrence, J. K., and Bolingbroke, D. S.,", highlight("Trends in Free Cities Culture, 2031", ["underline"]), highlight("Journal of Modern Social Sciences, International Edition, February 2032", ["note"])], "p", ["indent", "note"]);
-				break;
-			case "Faith in the Free Cities":
-				r.push("I recognize my faults;");
-				r.toNode("div", ["note"]);
-				r.push("I am always conscious of my sins.");
-				r.toNode("div", ["note"]);
-				r.push("I have sinned against you, Master and God,");
-				r.toNode("div", ["note"]);
-				r.push("And done what you consider evil.");
-				r.toNode("div", ["note"]);
-				r.push("So you are right in judging me;");
-				r.toNode("div", ["note"]);
-				r.push("You are justified in condemning me.");
-				r.toNode("div", ["note"]);
-				indentLine(["— Anonymous slave, 2030"], "div", ["indent", "note"]);
-
-				r.push("There are almost as many approaches to faith in the Free Cities as there are arcologies. For every arcology owner who cynically exploits religion, there is another who truly believes himself to be ordained by God as master of his fellow human beings. Nevertheless, common elements are identifiable. The most notorious arise from literal readings of scriptural passages that reference slavery.");
-				r.toNode("p", ["note"]);
-
-				r.push("Each of the three major monotheistic religions arose in a time and place where slavery was common. Thus the institution appears in all three of the great monotheistic holy books. It is childishly simple to find all the scriptural support for a reintroduction of slavery even the most illiberal arcology owner could desire in any one of these. This is presumably not what religious conservatives of the late 20th and early 21st centuries intended when advocating scriptural literalism.");
-				r.toNode("p", ["note"]);
-				indentLine(["— Lawrence, J. K., and Bolingbroke, D. S.,", highlight("Trends in Free Cities Culture, 2031", ["underline"]), highlight("Journal of Modern Social Sciences, International Edition, February 2032", ["note"])], "p", ["indent", "note"]);
-				break;
-			// LORE: INTERVIEWS
-			case "Slave Whore, Arcology K-2":
-				r.push("Interview with a slave whore");
-				r.toNode("div");
-				r.push(`"The Rose Petal," Arcology K-2, April 21, 2036`);
-				r.toNode("div");
-
-				r.push("Good afternoon. What's your name?");
-				r.toNode("p", ["note"]);
-				r.push("Um, what? Are, um, you going to fuck me? I mean, whatever you want to do is okay.");
-				r.toNode("div");
-
-				r.push("I'd like to learn more about you.");
-				r.toNode("p", ["note"]);
-				r.push("Um, okay. My name is Candace Ass, I'm twenty years old, and I'm one of the slave whores here at the Petal. Um, what else?");
-				r.toNode("div");
-
-				r.push("How did you become a slave? Tell me about how you got here.");
-				r.toNode("p", ["note"]);
-				r.push("Sure. Well, uh, it's kind of boring. I was at a club, and I guess someone put something in my drink, and I passed out, and well [laughs nervously] here I am, I guess?");
-				r.toNode("div");
-
-				r.push("What happened when you woke up?");
-				r.toNode("p", ["note"]);
-				r.push("Oh, like, you want me to tell you my life story?");
-				r.toNode("div");
-
-				r.push("Sure.");
-				r.toNode("p", ["note"]);
-				r.push("Would it be okay if you fucked me while I tell you? I, uh, can't really think right now. I guess I could also suck — but then I wouldn't be able to talk? Here, please, please stick — oh, okay. Okay! Uh. Yeah. [giggles] That feels better. Thanks!");
-				r.toNode("div");
-
-				r.push("Why couldn't you talk without being fucked?");
-				r.toNode("p", ["note"]);
-				r.push("Well, we're all really horny. I'm really horny. Everything does it. The hormones, and all the training, and the drugs, and it's also kind of a habit, you know? It's been almost an hour! If you do it slow like that I'll be okay. [giggles] Yeah. Thank you!");
-				r.toNode("div");
-
-				r.push("You can touch yourself if it helps you think more clearly.");
-				r.toNode("p", ["note"]);
-				r.push("Oh thanks but, um, no. That's okay. It's actually really sensitive. Like, um, nobody touches it? And we're not allowed to do that alone anyway. So this is, um, good for me. I'm used to it, I get off like this a lot. If you do it much harder I'll cum, but if you just do it like that, I'll edge for a while. Um, so we can talk? Is that what you wanted?");
-				r.toNode("div");
-
-				r.push("You were telling me about being enslaved.");
-				r.toNode("p", ["note"]);
-				r.push("Well, I woke up with a guy on top of me. Kind of like now! But, like, he was really pounding me. It kind of hurt, but I was still really drugged. And I was already on the slave drugs too. And then they put me through a bunch of tests and stuff. That first buttfuck wasn't really a test, it was just a slaver using me. All the new girls get used. But later they tested me a lot, and showed me a bunch of porn and stuff. I think it was to see what I liked. Then they put me in a little room, like a cell, and kept me there for a while.");
-				r.toNode("div");
-
-				r.push("How long were you there?");
-				r.toNode("p", ["note"]);
-				r.push("I don't really know? All I really did was sleep. It's what happens when you're getting a lot of drugs and need curatives to keep them from hurting you. You just sleep a lot. And when you're awake, you're really groggy and can't remember much. It makes it easier.");
-				r.toNode("div");
-
-				r.push("It makes what easier?");
-				r.toNode("p", ["note"]);
-				r.push("Being raped. I mean, um, that was before I was trained a lot? So I didn't like it most of the time guys fucked me in the ass. But I just laid there and let it happen mostly. I heard from girls later that the slave market I was at uses that as a test, actually.");
-				r.toNode("div");
-
-				r.push("A test of what?");
-				r.toNode("p", ["note"]);
-				r.push("Well if a new girl is all drugged up and, you know, gets hard and cums when they fuck her, she gets special treatment. A girl they caught with me, I think she came the first day, and she's, like, a Concubine now? But if a girl still fights on all the drugs they put her in the arcade. Most just lie there like me, which means they need better hormones. So then they clip you.");
-				r.toNode("div");
-
-				r.push("Perform an orchiectomy, you mean?");
-				r.toNode("p", ["note"]);
-				r.push("Yeah, cut your balls off. [giggles] I don't remember. I just noticed one day that I was really soft and they were gone. And then I started getting really soft and growing better boobs, and the slavers who came in and used me seemed cuter. I asked one of he wanted a blowjob, and then they took me out and trained me a little.");
-				r.toNode("div");
-
-				r.push("Sexual training?");
-				r.toNode("p", ["note"]);
-				r.push("No, no, just obedience and stuff. I mean, they trained me by making me suck cock and bend over and take it up the butt, but no, like, sex classes. But still mostly sleeping. It's like, I would wake up being fucked, and when the guy was done and had injected whatever into me and made me follow a few commands, I'd go shower and then go back to bed again. Weeks and weeks like that, and then some surgeries.");
-				r.toNode("div");
-
-				r.push("What surgeries have you had?");
-				r.toNode("p", ["note"]);
-				r.push("Lots! [giggles] Um, lip implants. [kissing noise] Obviously. And some little face stuff, like, bone stuff on my jaw and cheekbones. They did something to my throat, and after not letting me talk for a week my voice was high like it is now. Shoulders and hips, more bone stuff. Those hurt, I slept for like a week after each and they left me alone. Butt implants. And boobs, like, obviously. Three times, bigger each time. If they give you the big kind right away you get stretch marks and it's ugly. They say they're going to do it at least once more, so they're bigger than my head. [giggles]");
-				r.toNode("div");
-
-				r.push("When did you move to the brothel?");
-				r.toNode("p", ["note"]);
-				r.push("Well Mistress bought me! I think they decided I was ready to be sold when I started asking for sex. They fuck you regularly, like, it's on a schedule? To get you into the habit, and also to get your asshole used to being a fuckhole. And I started wanting it more than the schedule, and cumming almost every time. So they sold me. Mistress kept me for a week, and then sent me down to the brothel.");
-				r.toNode("div");
-
-				r.push("What was that week like?");
-				r.toNode("p", ["note"]);
-				r.push("Um, I'm not supposed to talk about that? But, um, she fucked me, of course. That's not a big secret. Most sex slaves on the drugs and the training and stuff need sex, like, a lot. So if we're serving only one person, we have to beg. It's nice working here, I don't have to beg much. Oh! And that's also when Mistress picked my name and style. Since my skin is so pale, and my asshole bleached to pink, I'm pink! Pink hair, pink lips, pink nails, pink collar, pink heels, pink asspussy. Candy Ass!");
-				r.toNode("div");
-
-				r.push("How long have you been here?");
-				r.toNode("p", ["note"]);
-				r.push("Well, ever since Mistress sent me here! So like a year?");
-				r.toNode("div");
-
-				r.push("Do you know what you'll be doing in the future?");
-				r.toNode("p", ["note"]);
-				r.push("Um what? Working here I guess? I don't understand.");
-				r.toNode("div");
-
-				r.push("How long do you think you'll be here?");
-				r.toNode("p", ["note"]);
-				r.push("Well I guess the oldest girl here is around forty? [giggles] She's nice, I like her. She has these huge soft boobs, and her milk is really nice. So I'm twenty, so twenty years I guess?");
-				r.toNode("div");
-
-				r.push("How many customers do you see a day?");
-				r.toNode("p", ["note"]);
-				r.push("It depends, like, it depends on what they want? Like a long fuck or something weird like you, it takes a while, but most just want me to suck them off or take their cock up my butthole. Fifteen maybe?");
-				r.toNode("div");
-
-				r.push("That means you're going to have sex in this brothel more than 100,000 times.");
-				r.toNode("p", ["note"]);
-				r.push("The way you say that make it sound like a lot. Oh! Oh, uh, you want me to -");
-				r.toNode("div");
-
-				r.push("Be quiet, slave.");
-				r.toNode("p", ["note"]);
-
-				r.push("— Lawrence, W. G.,", highlight("Guide to Modern Slavery, 2037 Edition", ["note"]));
-				r.toNode("p");
-				r.push("Appendix A, Interviews");
-				r.toNode("div");
-				break;
-			case "Slave Acolyte, Arcology V-7":
-				r.push("Interview with a Chattel Religionist acolyte");
-				r.toNode("div");
-				r.push("Main plaza, Arcology V-7, April 28, 2036");
-				r.toNode("div");
-				r.push("Good morning, honored visitor! I'm Patience; how may I serve you?");
-				r.toNode("p");
-
-				r.push(highlight("Good morning. What do you do here?", ["note"]));
-				r.toNode("div");
-				r.push("Why, I am an acolyte of the Prophet! I have the ordained and undeserved glory of being one of his slaves. I do my unworthy best to do whatever he in his infinite wisdom commands me. Today I am a public servant on the plaza, and it is my duty and pleasure to greet visitors to his arcology, Sir, and to serve them in whatever way I can.");
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("You seem very enthusiastic.", ["note"]));
-				r.toNode("div");
-				r.push("Oh thank you Sir! The Prophet says that the best slave is beautiful and cheerful, but if a slave cannot be both, it is much better for her to be cheerful. [laughs] So I do my best to be cheerful. May I ask what brings you to his arcology, Sir?");
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("You may. I travel from arcology to arcology. A tourist, you might say. And I write about what I find.", ["note"]));
-				r.toNode("div");
-				r.push("That's wonderful! I'd be happy to share anything with you, anything at all. The Prophet says that all slavery is holy, but Sir, I think his arcology must be more holy than most. And the Prophet says that acolytes are to always be honest, for the holy have nothing to hide.");
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("I see that.", ["note"]));
-				r.toNode("div");
-				r.push("[laughs] My habit, you mean? You must be joking, Sir! It covers most of me.");
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("Tell me about it.", ["note"]));
-				r.toNode("div");
-				r.push("With pleasure, Sir. It is white, because all sex slaves are pure. It covers my head and my shoulders but leaves my face bare so that everyone may see me smile. My breasts are bare because, the Prophet says, they are especially holy things, beautiful, and sexual, and nourishing. They must also be bare so that all can see how they are pure and unspoiled by false implants. My belly is bare to show that I have the very great honor of carrying new slaves for the Prophet. I have a golden belt with a strip of cloth in front and behind, because the Prophet says that sometimes, the imagined sight of a slave's holes are as beautiful as the true sight of them.");
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("You must be carrying twins.", ["note"]));
-				r.toNode("div");
-				r.push("Yes, Sir, twins. I hope very much to be blessed with triplets next time.");
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("Are they the Prophet's?", ["note"]));
-				r.toNode("div");
-				r.push("[laughs] Oh, no, Sir! I am just an unworthy old acolyte, not one of the Prophet's wives. I was blessed with the seed of one of the Prophet's breeding girls, much better seed than I deserve. She is young and very beautiful, much more beautiful than me, and many acolytes receive her seed so they can make beautiful new slaves.");
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("Between your pregnancy and your breasts, doesn't standing out here on the plaza tire you out?", ["note"]));
-				r.toNode("div");
-				r.push("No, Sir. Look here, Sir; [turns sideways] a good acolyte has strong legs, and I exercise twice a day. We must be strong to bear new slaves, work hard, and give pleasure without tiring. I can serve you standing, Sir, even like this. May I show you?");
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("Perhaps later. You seem proud of your body.", ["note"]));
-				r.toNode("div");
-				r.push("I am! The Prophet says that a holy slave may certainly be proud of the way in which she serves. I am not beautiful and I am not young, but I am healthy and strong and I am proud of that. I am blessed to be in an arcology where I can take pride in such things.");
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("What do you do when you are not being bred or serving in public?", ["note"]));
-				r.toNode("div");
-				r.push("Well, Sir, those are my roles as one of the Prophet's many slave acolytes. In daily life, do you mean, Sir? Well, as I said I exercise a great deal. To maintain my body I must eat a lot, so I have to work hard or I will become fat. Other than that, I live up above us, Sir, in a lower level of the Prophet's penthouse, in a room with my wife. It's a simple life.");
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("Your wife?", ["note"]));
-				r.toNode("div");
-				r.push("Yes, Sir, my wife Perseverance. There she is, Sir, on the other side of the plaza. One of the ones dressed like me. She has bigger boobs, but she isn't as pregnant right now. [points]");
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("She looks a lot like you.", ["note"]));
-				r.toNode("div");
-				r.push("Well, she should, Sir, we're sisters. The Prophet says that slave marriages between sisters are very holy, as long as no seed passes between them, and of course no seed can pass between us, because we both have pussies. I love her very much.");
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("Did you always?", ["note"]));
-				r.toNode("div");
-				r.push("Well yes! Oh, I see, Sir. No, no not that way. It was very hard for us, for a long time, but the Prophet is very wise. We were unworthy and slow to accept his wisdom, but he was patient with us and we learned in the end.");
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("That's certainly impressive. How did he teach you?", ["note"]));
-				r.toNode("div");
-				r.push("Many ways, of course, Sir, but the Prophet is so wise that he often brings slaves to teach themselves by his wisdom. He has many ways of filling a slave with radiant sexual desire, Sir, so many ways, and they are so powerful, that she must find some way of getting relief. And the Prophet provided that we were each other's only source of relief.");
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("How was that hard for you?", ["note"]));
-				r.toNode("div");
-				r.push("The Prophet says that it is natural for it to be hard, and as in all things he was right. We were ashamed, and we cried afterward, every time, for a long time. But we became accustomed to each other's bodies, and we saw that many sister-wives were happy, and no one looked down on us. So we agreed with each other to stop being ashamed.");
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("You're completely comfortable speaking about being married to your sister, here in the plaza?", ["note"]));
-				r.toNode("div");
-				r.push("Sir, I'm completely comfortable saying here in the plaza that when I awoke this morning, she was sucking the milk from one of my nipples, and that we brought each other to orgasm twice before we came out to the plaza today. I love her! I hope you will let us serve you together.");
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push("— Lawrence, W. G.,", highlight("Guide to Modern Slavery, 2037 Edition", ["note"]));
-				r.toNode("div");
-				r.push("Appendix A, Interviews");
-				r.toNode("div");
-				break;
-			case "Public Slave, Arcology A-3":
-				r.push("Interview with a public slave subject to Degradationism");
-				r.toNode("div");
-				r.push("Main plaza, Arcology A-2, April 16, 2036");
-				r.toNode("div");
-				r.push("P-please, Sir! Please fuck me, Sir!");
-				r.toNode("p");
-
-				r.toNode("p");
-				r.push(highlight("Very well. I will ask, though: why?", ["note"]));
-				r.toNode("div");
-				r.push("B-because I'm overdue, Sir. If I d-don't get someone to f-fuck me soon, my c-collar will hurt me, Sir. Oh please, oh — oh thank you Sir, please, please — oh, OH —");
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push("[Some time later.]");
-				r.toNode("div");
-				r.push("[Slave collar chimes.]");
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("What was that?", ["note"]));
-				r.toNode("div");
-				r.push("Oh, um, [sniff] Sir, the arcology detected that you came inside me, Sir. That means that I have a little time before I have to get fucked again, Sir. [sniff]");
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("All public slaves are subject to this system?", ["note"]));
-				r.toNode("div");
-				r.push("All of the Mistress's public slaves, Sir. Some other owners use it, some don't. [sniff] It's s-supposed to make us g-good public representatives for the arcology's slaves. B-because it makes us d-desperate. [sniff] Sir.");
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("You seem articulate, slave. What were you before enslavement?", ["note"]));
-				r.toNode("div");
-				r.push("I was a s-student, Sir.");
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("I see. Slave, I would like to learn more about the arcology. You will accompany me as I tour it. If you answer my questions as I do so, I will fuck you when your collar requires it.", ["note"]));
-				r.toNode("div");
-				r.push("Oh, thank you, Sir. Thank you. Um, how long will you be here, Sir?");
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("None of your concern. Who is the person in that cage hanging there?", ["note"]));
-				r.toNode("div");
-				r.push("I don't know, Sir. And, Sir, that's not, um, a person. She's a slave, Sir.");
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("I see. What sorts of things are punished that way?", ["note"]));
-				r.toNode("div");
-				r.push("Oh, lots of things, Sir. Hesitating. Dropping things. Touching a dick or a clit with teeth. Letting cum spill. Anyone can put a slave in one of the cages; they're public, Sir, and anyone can use a slave in them. You see they're kind of shaped so that the slave is positioned so her holes are sticking out, Sir?");
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("Follow me.", ["note"]));
-				r.toNode("div");
-				r.push("Yes, Sir. [winces] Oh. Um, sorry, Sir.");
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("Does it hurt to walk in those shoes?", ["note"]));
-				r.toNode("div");
-				r.push("N-no, Sir. I need the heels to walk. It's the chain between my nipples that hurts a little when I walk, Sir, and it bounces around. I was wincing, earlier, partly because I was bouncing around, and it hurt, Sir.");
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("And yet you orgasmed.", ["note"]));
-				r.toNode("div");
-				r.push("It's h-hard not to, Sir. I have a smart piercing that makes me orgasm, Sir.");
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("Why do you need heels to walk?", ["note"]));
-				r.toNode("div");
-				r.push("Because my tendons have been clipped, Sir.");
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("What did you do?", ["note"]));
-				r.toNode("div");
-				r.push("Um, nothing, Sir? It wasn't a punishment, all slaves have their tendons clipped. The heels are a reward. If we're not good, we have to crawl, Sir.");
-				r.toNode("div");
-
-				r.push("[Walking.]");
-				r.toNode("p");
-
-				r.toNode("p");
-				r.push(highlight("Was that fear I just saw?", ["note"]));
-				r.toNode("div");
-				r.push("Yes, Sir.");
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("Why?", ["note"]));
-				r.toNode("div");
-				r.push("That's the main dairy ahead of us, Sir.");
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("Is it open to the public?", ["note"]));
-				r.toNode("div");
-				r.push("T-t-to view, yes, Sir.");
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("Follow me.", ["note"]));
-				r.toNode("div");
-				r.push("Y-yes, Sir. [sniff]");
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("That is quite an impressive sight.", ["note"]));
-				r.toNode("div");
-				r.push("Yes, Sir.");
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("Do you know how large they are?", ["note"]));
-				r.toNode("div");
-				r.push("Th-th-their breasts, Sir? About t-twenty or twenty five liters e-ea-each, S-Sir.");
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("Why does this frighten you so much?", ["note"]));
-				r.toNode("div");
-				r.push("W-well, I'll, um, be put in here, Sir. Someday. Oh. [sniff]");
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("Why?", ["note"]));
-				r.toNode("div");
-				r.push("All slaves are p-put in h-here, when they're loose, Sir. All the, the, the", highlight("sex,", ["note"]), "it's just to loosen us, s-so those", highlight("things,", ["note"]), "will fit inside...");
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push("— Lawrence, W. G.,", highlight("Guide to Modern Slavery, 2037 Edition", ["note"]));
-				r.toNode("div");
-				r.push("Appendix A, Interviews");
-				r.toNode("div");
-				break;
-			case "Mercenary, Arcology B-2":
-				r.push("Interview with a Free Cities mercenary");
-				r.toNode("div");
-				r.push("The Wild Goose, Arcology B-2, March 11, 2036");
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("Good evening.", ["note"]));
-				r.toNode("div");
-				r.push("No offense, but I only fuck girls.");
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("None taken, and I'm just looking for conversation.", ["note"]));
-				r.toNode("div");
-				r.push("'k, buy the next round and converse away.");
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("Done. Fine to meet you. I'm touring the arcologies, writing a book. I'd like to ask you about life as a mercenary here in the Free Cities.", ["note"]));
-				r.toNode("div");
-				r.push("[laughs] Shit, I'm going to be famous.");
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("If you'd like to be. I'm W.G.; what's your name?", ["note"]));
-				r.toNode("div");
-				r.push("Well, W.G., I'll answer questions for your book, but I don't actually want to be famous. No names.");
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("That works fine for me. How did you become a mercenary?", ["note"]));
-				r.toNode("div");
-				r.push("I was a soldier, and the pay was shit, so instead of re-upping I went merc. Boring, but pretty common, believe me. Half the old world militaries are just merc training camps now. You enlist, and then you get out as soon as you have enough experience that a mercenary group'll take you on.");
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("Did you have combat experience?", ["note"]));
-				r.toNode("div");
-				r.push("[laughs] You know your shit. No, no I did not. I wasn't even infantry. Dirty little secret you probably already know: if you're a girl, most merc groups don't give a fuck what experience you actually have, 'cause either way, they win.");
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("I think I understand, but lay it out for me.", ["note"]));
-				r.toNode("div");
-				r.push("If you're a good troop, you're a good troop and they come out ahead. Rifle don't care what equipment the merc holding it has. If you're not a good troop, they tie you up in a shipping container, use you 'till they get bored, and then sell you. And they come out ahead. Win-win.");
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("You obviously came out on the right side of that, but did you suffer any abuse before then?", ["note"]));
-				r.toNode("div");
-				r.push("Nah. It'd be dumb to do anything to a newbie and then not enslave 'em. What, you're gonna rape somebody and then give 'em two-forty rounds, four frags, and a satchel charge? Fuck no.");
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("That's what you carry?", ["note"]));
-				r.toNode("div");
-				r.push("Yeah fuck that subject anyway. And yeah, when taking prisoners isn't on the agenda. I'm a big girl, I can manage eight mags in a double deck chest rig. If we are taking prisoners, then swap out half the frags for gas and half the mags for an underslung S. G. with beanbags and taser rounds. Though you never want to use any of that, nonlethals included.");
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("Because you might damage the merchandise?", ["note"]));
-				r.toNode("div");
-				r.push("Because you might damage the merchandise. Did you know it's possible to burst an implant with a beanbag round? Well, it's possible to burst an implant with a beanbag round.");
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("You know I have to ask about that now.", ["note"]));
-				r.toNode("div");
-				r.push("And I wouldn't have said it if I didn't want to tell the story. Not a long one anyway. Old world mob boss asshole with a moored yacht full of hoes, all tats and fake tits and shit. We went in quick without enough muscle and the guards resisted. Perfect op is, you go in so heavy that nobody resists, but it was rushed and we had to put 'em down. So all these bitches are running around screaming their heads off and we get the call that the police are coming. Didn't want to shoot it out with them since the tip came from a cop in the first place. So we had a couple of minutes to grab what we could and jet. So, beanbags, zipties, bodybags, and off — we — go, one hoe apiece.");
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("That sounds risky.", ["note"]));
-				r.toNode("div");
-				r.push("Yeah it was. I'm not some hothead who does shit like that for the rush. If you run that op once a week you're going to be dead inside a year. I found new employers not long after that one. Funny story and all, but if I hadn't gone with ceramic side plates in my vest that night I would have been fucked.");
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("This is a quieter outfit?", ["note"]));
-				r.toNode("div");
-				r.push("Much. Writer, I am now bored. And since I am drunk, and horny, and an incorrigible dyke, I am going to go find a cute slave with freckles and make her eat my pussy until I pass out. You want the other end?");
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push("— Lawrence, W. G.,", highlight("Guide to Modern Slavery, 2037 Edition", ["note"]));
-				r.toNode("div");
-				r.push("Appendix A, Interviews");
-				r.toNode("div");
-				break;
-			case "Slave Trainer, Arcology D-10":
-				r.push("Interview and observation with a Free Cities slave trainer");
-				r.toNode("div");
-				r.push("Slave Market training plaza, Arcology D-10, May 23, 2036");
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("Good morning! I'm Lawrence, W.G. Lawrence."));
-				r.toNode("div");
-				r.push(highlight("Hello. Nice to meet you. I'm Claudia.", ["note"]));
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("I'd like to thank you for being willing to have me along as an observer; it's very kind of you."));
-				r.toNode("div");
-				r.push(highlight("My pleasure. I do good work and I don't mind people knowing it.", ["note"]));
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("May I ask you a few questions before you get back to your routine?"));
-				r.toNode("div");
-				r.push(highlight("Sure. We're going to be working with a new slave today, and I've got her in my office, sitting and thinking. There's no rush. Unpredictability is good.", ["note"]));
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("What got you into this career?"));
-				r.toNode("div");
-				r.push(highlight("Well, I'm an ex-slave. I served my Mistress, the owner of this arcology, for three years. But I'm getting things out of order. I was a Sister before that. That's a very long story. Do you want to get into that? Every single Sister has the same story. [laughs] That's the beauty of it.", ["note"]));
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("That's all right. You mentioned before that you'd like to be known for what you're doing now."));
-				r.toNode("div");
-				r.push(highlight("Yeah. I'm not ashamed of any of it, and I wouldn't be where I am without it, but I'm my own woman now.", ["note"]));
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("And you became your own woman after retiring from slavery here?"));
-				r.toNode("div");
-				r.push(highlight("I did, yes. It was bittersweet, but it was time. Mistress prefers young ladies.", ["note"]));
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("You keep referring to her as Mistress. Is that leftover conditioning?"));
-				r.toNode("div");
-				r.push(highlight("[laughs] No, no, that's just what I call her, you know? She'll always be my Mistress in a way. And again, I'm here because she retires her girls incredibly well.", ["note"]));
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("What was your role with her?"));
-				r.toNode("div");
-				r.push(highlight("I was her Head Girl, for my last year with her, at least. Before that, her Head Girl's girl. That Head Girl was a Sister, too. I can introduce you, if you'd like; she's a trainer here too. We work together sometimes.", ["note"]));
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight(""));
-				r.toNode("div");
-				r.push(highlight("", ["note"]));
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("Was that a blush?"));
-				r.toNode("div");
-				r.push(highlight("Okay, okay! We spend time together after work sometimes, too. Anyway, slave training. Come with me, my office is back this way.", ["note"]));
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("Who are you training today?"));
-				r.toNode("div");
-				r.push(highlight("New slave, just bought her from the kidnappers yesterday. Pretty average. Mid-twenties, student then housewife. Decent tits, but too chubby. We'll work on that. And here we are.", ["note"]));
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("Impressive office, even from the outside."));
-				r.toNode("div");
-				r.push(highlight("Thanks. So, she's in there. Room's soundproof, she can't hear us. Here's how I'd like to play this: just stay out of the light, and you can observe as long as you like. She's under a spotlight, and everything else is dark. She probably won't even know you're there.", ["note"]));
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("That would work very well, thank you."));
-				r.toNode("div");
-				r.push(highlight("You're welcome. After you.", ["note"]));
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("Hello, Suzanne.", ["note"]));
-				r.toNode("div");
-				r.push("H-hi, Ma'am.");
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("Stand up.", ["note"]));
-				r.toNode("div");
-				r.push("Yes, Ma'am. Um, Ma'am, may I please have my pants back? They took them away in the market, and I thought since you gave my sweater back, you'd -");
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("Be quiet.", ["note"]));
-				r.toNode("div");
-				r.push("Yes, Ma'am.");
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("Hold your hands at your sides like I told you, and stop pulling your sweater down over your pussy.", ["note"]));
-				r.toNode("div");
-				r.push("Y-yes, Ma'am.");
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("Turn around.", ["note"]));
-				r.toNode("div");
-				r.push("Yes, Ma'am.");
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("Do you like having your big fat naked butt hanging out, bitch?", ["note"]));
-				r.toNode("div");
-				r.push("Yes, Ma — aaAAH! Oh, ow, oh my God, ow -");
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("Be quiet. That was a 2. Your collar goes to 10.", ["note"]));
-				r.toNode("div");
-				r.push("[sobbing] Yes, Ma'am.");
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("You just lied to me. I will ask again: do you like having your big fat naked butt hang out?", ["note"]));
-				r.toNode("div");
-				r.push("N-no, Ma'am.");
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("", ["note"]));
-				r.toNode("div");
-				r.push("");
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("Take your sweater off. Good bitch. That's right, blush for me. Now, tear it in half.", ["note"]));
-				r.toNode("div");
-				r.push("What!? Oh please, no, please no, I'll do it! Please don't shock me again, Ma'am! [frantic tearing]");
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("You don't need clothes, bitch. Not anymore. Now, turn back around, and bend over.", ["note"]));
-				r.toNode("div");
-				r.push("Yes, Ma'am.");
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("Spread your big fat buttcheeks.", ["note"]));
-				r.toNode("div");
-				r.push("Yes, Ma'am.");
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("Ever had a cock up your butthole, Suzie?", ["note"]));
-				r.toNode("div");
-				r.push("[sobbing]");
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push("— Lawrence, W. G.,", highlight("Guide to Modern Slavery, 2037 Edition", ["note"]));
-				r.toNode("div");
-				r.push("Appendix A, Interviews");
-				r.toNode("div");
-				break;
-			case "Monarch, Arcology F-8":
-				r.push(`Interview with a Free Cities "anarcho-monarch"`);
-				r.toNode("div");
-				r.push("Arcological Penthouse, Arcology F-8, June 23, 2036");
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("Good afternoon. My name is -", ["note"]));
-				r.toNode("div");
-				r.push("(From Guard) You will address His Highness with proper courtesy, peasant.");
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("Ah, my apologies. What I meant to say was, your Majesty, my name is W.G. Lawrence, and I'd like to interview you about this arcology, and your role in leading it. Err, for my book, your Highness.", ["note"]));
-				r.toNode("div");
-				r.push("A scribe. Well, speak quickly. I am a busy man.");
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("Of course. Just for the record, might you introduce yourself?", ["note"]));
-				r.toNode("div");
-				r.push("(Gestures to a guard.)");
-				r.toNode("div");
-				r.push("(From Guard) You are speaking with His Highness King William, First of His name, Savior of the Arcology, Executive Lord and Master of the Board of Directors, Majority Shareholder and Anarcho-Monarch of the most noble Arcology of Feight.");
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("Yes, yes, right, quite a magnificent title. Might I ask how it came to be that a Monarch took control of a Free City? Isn't strong authority antithetical to the free cities ideal?", ["note"]));
-				r.toNode("div");
-				r.push("[laughs] Not a monarch, an anarcho-monarch. I did not earn my titles through bullying or force, and certainly not through inheriting it from some decrepit geriatric moron like in the old world. I am the legitimate majority stakeholder of the arcology and the rightful head of its board of directors. My rule is strong because I am strong. Were I to become weak, my position would be ousted and the people would take my place directly.");
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("Is that what the 'anarcho' means?", ["note"]));
-				r.toNode("div");
-				r.push("Mmm. I do not simply rule the people. I am the people.");
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("But you dictate laws down to them - isn't that mutally contradictory?", ["note"]));
-				r.toNode("div");
-				r.push("No. Peasants do not understand how to govern themselves. Look at the 'pure' anarchies outside our walls, scribe, and you'll see men tearing each other apart for scraps on a bone or a chance with an emaciated crack-whore. Without a strong force to bind a society in place, society falls apart entirely. If my people dislike paying my rents or obeying my Knights, they are free to leave, and take their chances in the ruins of the Old World.");
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("So your majority ownership and management of the arcology gives you the right to control its populace, who live under the laws you set, and if they disagree with your, ah, symbolic totality, their only option is to leave?", ["note"]));
-				r.toNode("div");
-				r.push("Now you understand.");
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("Alright. Well, what about the lesser nobles? The Counts and Barons and Knights of the arcology?", ["note"]));
-				r.toNode("div");
-				r.push("What about them?");
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("Why do they have the right to authority in your free society?", ["note"]));
-				r.toNode("div");
-				r.push("They are my representatives. To be a Knight is to have my personal trust to act in my name, wherever I cannot be. I am the fountain from which all authority stems. So long as my water flows pure, all steps of the fountain remain clear.");
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push(highlight("What about corruption? Doesn't giving so much power to entrenched nobility make it more likely that -", ["note"]));
-				r.toNode("div");
-				r.push("(From Guard) Alright, that's enough out of you. The King has better things to do than explain his policies all day. Let's go.");
-				r.toNode("div");
-
-				r.toNode("p");
-				r.push("— Lawrence, W. G.,", highlight("Guide to Modern Slavery, 2037 Edition", ["note"]));
-				r.toNode("div");
-				r.push("Appendix A, Interviews");
-				r.toNode("div");
-				break;
 			// MODS
 			case "Special Force":
 				r.push(highlight("NOTE: The Special Force is an optional mod, and as such will only be initialized in-game if it is enabled at game start or in the options menu."));
@@ -2032,14 +998,6 @@ App.Encyclopedia.UI = function() {
 				r.push("A specialized organic implant produced from the dispensary designed to be implanted into to a slave's natural breast tissue to maintain a slave's breast shape no matter how big her breasts may grow. An expensive and risky procedure proportional to the size of the breasts the mesh will be implanted into. Should health become an issue, the slave in surgery may undergo an emergency mastectomy. Furthermore, once implanted, the mesh cannot be safely removed from the breast. However, total breast removal will rid the slave of the implant; consider strongly when and if you want to implant the mesh before doing so. They are exceedingly difficult to identify once bound to the breast tissue, and combined with their natural shape, are often overlooked.");
 				r.toNode("div");
 				break;
-			case "Nipple Conversion — Penetratable":
-				r.push("By taking extremely large nipples and inverting them into an adequately sized breast, it is possible to use an advanced surgical suite to create a cavity suitable for penetration. Early attempts found that the novelty of fucking a tit did not offset the discomfort of ramming one's dick into a solid object and as such, the surgery is only applicable to slaves with at least 500ccs of breast tissue per boob. Milk production is unhindered by the alterations, though non-machine milking is far more difficult without a nipple to grab and it is unlikely to be able to properly nourish a child. Arousal is also expressed differently, as the nipple cannot stiffen any longer; instead, engorgement causes the newly crafted passage to tighten, adding to the pleasure of using the unorthodox hole. While looseness is no issue, and the orifice quite capable of stretching around an intruding shaft, depth can become a problem; even the most average of slaveowners will find themselves bottoming out far sooner than they would like. Fortunately, this downside is offset by the novelty of the act and the capacity to push the nipple itself deeper into the slave's breast to better accommodate one's cock. In this case, bigger really is better.");
-				r.toNode("div");
-				break;
-			case "Ejaculation Boosting Prostate Implant":
-				r.push("An additional prostate implant designed to hyperstimulate one's prostate and store the resulting fluid for release during ejaculation in a specialized reservoir. An easy way to tell if the precum soaked slave you are fucking is sporting this implant is the distinct swelling in her lower belly as she nears release. Due to the sheer amount of prostate fluid released, sperm per volume is greatly reduced, devastating profits of those looking to sell cum. Remember to keep your slaves well hydrated!");
-				r.toNode("div");
-				break;
 			case "FCTV":
 				r.push("Free Cities TV, or", highlight("FCYV"), "as it is more commonly called, is a very popular streaming video service. A venture started not long after the first Free Cities were founded, it took advantage of the new lack of regulatory oversight to create and host content that had long been banned in the old world. Under the guidance of 8HGG Inc., FCTV has developed into a popular mixed-mode service, with a variety of live streaming channels as well as a large selection of ready stream content ranging from hyper porn to contemporary broadcast series shows.");
 				r.toNode("div");
@@ -2064,10 +1022,6 @@ App.Encyclopedia.UI = function() {
 				r.push("Under normal circumstances, a slave will likely bear a single child from a pregnancy, but with a little extra help from a number of fertility boosting methods, that count can easily be pushed higher. While each fertility agent will only add a chance of an additional ovum, combining treatments will yield a cumulative effect, greatly enhancing the likelihood of multiples. One must exercise caution, however, as a slave's body can only support so many offspring without complications. Miscarriage, discarded embryos, and even slave death are all possible with excessive misuse of fertility agents.");
 				r.toNode("p");
 				break;
-			case "Corrective Diet":
-				r.push("Using the upgraded kitchen to monitor a slave's caloric intake allows for diets to be tailored to slowly increase or decrease their weight without them realizing.");
-				r.toNode("div");
-				break;
 			case "Fertility Mix":
 				r.push("A simple dietary blend designed to encourage ovulation. Fertile slaves will find themselves subconsciously lusting for loads of cum blasting into their pussies and, once they give in to temptation, will likely find their bellies swelling with twins or even triplets.");
 				r.toNode("div");
@@ -2082,7 +1036,7 @@ App.Encyclopedia.UI = function() {
 				r.toNode("div");
 				break;
 			case "Catmod":
-				r.push("Catmod is an optional modification that focuses on, surprise surprise, adding catgirls to the game. However, as you might have noticed, Free Cities is based on our own universe, and, unfortunately, catgirls don't actually exist. So how is one to acquire fuckable cats in a world sadly devoid of them? Well, multi-million dollar genetic engineering projects, of course! After a massive investment in your genelab and the best old world engineers avalible, you too will be able to create your very own inhuman abominations of science with cute, twitchy ears and button noses. Catgirls contain a number of mechanical changes and unique features, many of which you will have to find out for yourself through your exciting journey through the world of scientific malpractice. Worth noting for mechanical purposes, however, is that the //Feline// face type is only found on catgirls, and has a similar effect to exotic faces; uglier feline faces are dramatically worse, while beautiful feline faces are signiicantly better from a beauty perspective.");
+				r.push("Catmod is an optional modification that focuses on, surprise surprise, adding catgirls to the game. However, as you might have noticed, Free Cities is based on our own universe, and, unfortunately, catgirls don't actually exist. So how is one to acquire fuckable cats in a world sadly devoid of them? Well, multi-million dollar genetic engineering projects, of course! After a massive investment in your genelab and the best old world engineers available, you too will be able to create your very own inhuman abominations of science with cute, twitchy ears and button noses. Catgirls contain a number of mechanical changes and unique features, many of which you will have to find out for yourself through your exciting journey through the world of scientific malpractice. Worth noting for mechanical purposes, however, is that the //Feline// face type is only found on catgirls, and has a similar effect to exotic faces; uglier feline faces are dramatically worse, while beautiful feline faces are significantly better from a beauty perspective.");
 				r.toNode("div");
 				break;
 			case "Bioengineering":
@@ -2492,9 +1446,6 @@ App.Encyclopedia.UI = function() {
 			case "Lolimod":
 				App.UI.DOM.appendNewElement("div", text, "This mod adds a variety of underage content to the game. This content is purely optional. For more information on certain features, select a more particular entry:");
 				break;
-			case "Slave Modification":
-				App.UI.DOM.appendNewElement("div", text, "What would a slaveowner be without the ability to customize their slaves' bodies? The Free Cities offer a variety of ways to achieve this for an arcology owner. Choose a more particular entry below:");
-				break;
 			case "Inbreeding":
 				App.UI.DOM.appendNewElement("div", text, "At the intersection of incest and pregnancy lies inbreeding. As seen in royal families throughout history, high levels of inbreeding can result in severe issues, often manifesting as facial deformities or reduced intellectual capacity.");
 				App.Events.addParagraph(text, ["One metric for quantifying inbreeding is the coefficient of inbreeding (CoI), which is the probability that both copies of a person's genes come from the same common ancestor. For example, without any previous inbreeding a child from self-fertilization has a CoI of 0.5, a child of two full siblings has a CoI of 0.25, and a child of two first cousins has a CoI of 0.0625."]);
diff --git a/devTools/types/FC/arcology.d.ts b/devTools/types/FC/arcology.d.ts
index a0a48a7315e75a7a456de13732e266dd562d6423..0aa28cf91c15cb07474cc165f58d3f4b8a180308 100644
--- a/devTools/types/FC/arcology.d.ts
+++ b/devTools/types/FC/arcology.d.ts
@@ -74,7 +74,7 @@ declare namespace FC {
 		};
 		FSChattelReligionist: {
 			noun: "Chattel Religionism", adj: "Chattel Religionist", deco: "Chattel Religionist",
-			research: undefined, SMR: true, policy: "Law", choice: undefined
+			research: undefined, SMR: true, policy: "Law" | "Law2", choice: undefined
 		};
 		FSNull: {
 			noun: "Multiculturalism", adj: "Multiculturalist", deco: undefined,
diff --git a/js/003-data/gameVariableData.js b/js/003-data/gameVariableData.js
index ea3d98b4c3e527ac4feb16049a64f227382a7715..1a6212f6130eaa15a1081a807ce4d89f0a6eee58 100644
--- a/js/003-data/gameVariableData.js
+++ b/js/003-data/gameVariableData.js
@@ -298,6 +298,7 @@ App.Data.defaultGameStateVariables = {
 
 // Corp data
 App.Data.CorpInitData = {
+	Name: 'Your corporation',
 	Announced: 0,
 	Incorporated: 0,
 	Market: 0,
diff --git a/js/003-data/policiesData.js b/js/003-data/policiesData.js
index 53ff399abb680f386922432192462322f3ad8c3a..e5ad057b92a9668ef6d673aae539d1d86617b485 100644
--- a/js/003-data/policiesData.js
+++ b/js/003-data/policiesData.js
@@ -316,11 +316,10 @@ App.Data.Policies.Selection = {
 			{
 				title: "Age Of Sexual Appeal",
 				get text() {
-					const el = new DocumentFragment;
-					if(V.idealAge === 18) {
+					const el = new DocumentFragment();
+					if (V.idealAge === 18) {
 						el.append(`many consider the most sexually appealing age to be the old world default of 18. You will use your influence to change the sexual ideal to `);
-					}
-					else {
+					} else {
 						el.append(`many consider the most sexually appealing age to be ${V.idealAge}. You will use your influence to change the sexual ideal to `);
 					}
 					el.append(
@@ -331,10 +330,10 @@ App.Data.Policies.Selection = {
 								v => {
 									let minAge = V.minimumSlaveAge;
 									let maxAge = V.retirementAge - 1 > 60 ? 60 : V.retirementAge - 1;/* problems do occur if idealAge can be set to over 60 */
-									if(V.arcologies[0].FSMaturityPreferentialist !== "unset") {
+									if (V.arcologies[0].FSMaturityPreferentialist !== "unset") {
 										minAge = 30;
 									}
-									if(V.arcologies[0].FSYouthPreferentialist !== "unset") {
+									if (V.arcologies[0].FSYouthPreferentialist !== "unset") {
 										maxAge = 29;
 									}
 									V.targetIdealAge = Math.clamp(v, minAge, maxAge);
@@ -350,21 +349,20 @@ App.Data.Policies.Selection = {
 				get activatedText() {
 					return `you are using your personal influence to make ${V.targetIdealAge} the most sexually appealing age. The current perceived ideal age is ${V.idealAge}.`;
 				},
-				onRepeal: function() { 
-					if(V.arcologies[0].FSMaturityPreferentialist !== "unset") {
-						if(V.idealAge < 30) {
+				onRepeal: function() {
+					if (V.arcologies[0].FSMaturityPreferentialist !== "unset") {
+						if (V.idealAge < 30) {
 							V.idealAge = 30;
 						}
 						V.targetIdealAge = 30;
-					}
-					else {
-						if(V.idealAge >= 30) {
+					} else {
+						if (V.idealAge >= 30) {
 							V.idealAge = 29;
 						}
 						V.targetIdealAge = 18;
 					}
 				},
-				get note() { return `Will cost ${cashFormat(1500)} weekly until the target age is reached; high reputation will accelerate adoption.`}
+				get note() { return `Will cost ${cashFormat(1500)} weekly until the target age is reached; high reputation will accelerate adoption.`; }
 			}
 		],
 		"arcologies[0].FSEgyptianRevivalistIncestPolicy": [
@@ -790,7 +788,7 @@ App.Data.Policies.Selection = {
 			{
 				title: "Redefined Mandatory Retirement Age",
 				get text() {
-					const el = new DocumentFragment;
+					const el = new DocumentFragment();
 					el.append(`you will set your arcology's standard retirement age for sex slaves at age `);
 					el.append(
 						App.UI.DOM.makeElement(
@@ -823,7 +821,7 @@ App.Data.Policies.Selection = {
 			{
 				title: "Physical Retirement Age",
 				get text() {
-					const el = new DocumentFragment;
+					const el = new DocumentFragment();
 					el.append(`you will replace your arcology's standard age-based retirement policy for one retiring sex slaves once their bodies reach age `);
 					el.append(
 						App.UI.DOM.makeElement(
@@ -834,7 +832,7 @@ App.Data.Policies.Selection = {
 									const age = Math.clamp(v, 20, 120);
 									V.customRetirementAge = age;
 									V.retirementAge = age;
-									if(V.idealAge >= V.retirementAge) {
+									if (V.idealAge >= V.retirementAge) {
 										V.idealAge = V.retirementAge - 1;
 									}
 									App.UI.reload();
@@ -895,7 +893,7 @@ App.Data.Policies.Selection = {
 				title: "Sexual Milestone Retirement",
 				get text() { return `slaves will be rewarded with their freedom once they have been fucked ${V.policies.retirement.sex === 0 ? "a set number of" : num(V.policies.retirement.sex)} times.`; },
 				get activatedText() {
-					const el = new DocumentFragment;
+					const el = new DocumentFragment();
 					let div = document.createElement("div");
 					el.append(`slaves are rewarded with their freedom once they have been fucked ${num(V.policies.retirement.sex)} times.`);
 					div.append(`Set a new retirement requirement:`);
@@ -925,7 +923,7 @@ App.Data.Policies.Selection = {
 				title: "Productive Cow Retirement",
 				get text() { return `slaves will be rewarded with their freedom once they have given ${V.policies.retirement.milk === 0 ? "a set number of" : num(V.policies.retirement.milk)} liters of milk.`; },
 				get activatedText() {
-					const el = new DocumentFragment;
+					const el = new DocumentFragment();
 					let div = document.createElement("div");
 					el.append(`slaves are rewarded with their freedom once they have given ${num(V.policies.retirement.milk)} liters of milk.`);
 					div.append(`Set a new retirement requirement:`);
@@ -955,7 +953,7 @@ App.Data.Policies.Selection = {
 				title: "Productive Bull Retirement",
 				get text() { return `slaves will be rewarded with their freedom once they have given ${V.policies.retirement.cum === 0 ? "a set number of" : num(V.policies.retirement.cum)} deciliters of cum.`; },
 				get activatedText() {
-					const el = new DocumentFragment;
+					const el = new DocumentFragment();
 					let div = document.createElement("div");
 					el.append(`slaves are rewarded with their freedom once they have given ${num(V.policies.retirement.cum)} deciliters of cum.`);
 					div.append(`Set a new retirement requirement:`);
@@ -985,7 +983,7 @@ App.Data.Policies.Selection = {
 				title: "Fertile Breeder Retirement",
 				get text() { return `slaves will be rewarded with their freedom once they add ${V.policies.retirement.births === 0 ? "a set number of" : num(V.policies.retirement.births)} new slaves to the population of ${V.arcologies[0].name}.`; },
 				get activatedText() {
-					const el = new DocumentFragment;
+					const el = new DocumentFragment();
 					let div = document.createElement("div");
 					el.append(`slaves are rewarded with their freedom once they add ${num(V.policies.retirement.births)} new slaves to the population of ${V.arcologies[0].name}. `);
 					div.append(`Set a new retirement requirement:`);
@@ -1015,7 +1013,7 @@ App.Data.Policies.Selection = {
 				title: "Champion Gladiatrix Retirement",
 				get text() { return `slaves will be rewarded with their freedom once they have killed ${V.policies.retirement.kills === 0 ? "a set number of" : num(V.policies.retirement.kills)} of their fellow slaves in the pit.`; },
 				get activatedText() {
-					const el = new DocumentFragment;
+					const el = new DocumentFragment();
 					let div = document.createElement("div");
 					el.append(`slaves are rewarded with their freedom once they have killed ${num(V.policies.retirement.kills)} of their fellow slaves in the pit.`);
 					div.append(`Set a new retirement requirement:`);
@@ -1045,7 +1043,7 @@ App.Data.Policies.Selection = {
 		"policies.retirement.menial2Citizen": [
 			{
 				get title() {
-					const el = new DocumentFragment;
+					const el = new DocumentFragment();
 					if (V.policies.retirement.menial2Citizen !== 1) {
 						let div = document.createElement("div");
 						let span = document.createElement("span");
@@ -1063,7 +1061,7 @@ App.Data.Policies.Selection = {
 					return el;
 				},
 				get text() {
-					const el = new DocumentFragment;
+					const el = new DocumentFragment();
 					el.append(`you will set your arcology's retirement age for menial slaves at age`);
 					el.append(
 						App.UI.DOM.makeElement(
@@ -1747,6 +1745,16 @@ App.Data.Policies.Selection = {
 				note: `Will increase your renown`
 			}
 		],
+		"arcologies[0].FSChattelReligionistLaw2": [
+			{
+				title: "Holy Nudism",
+				titleClass: "lime",
+				text: "religious clothing standards will shift from modesty to exposure.",
+				activatedText: "religious clothing standards emphasize exposure rather than modesty.",
+				get requirements() { return (V.arcologies[0].FSChattelReligionist >= 60); },
+				note: `Along with nudity, certain revealing clothing, including the chattel habit, will remain acceptable attire.`
+			}
+		],
 		"arcologies[0].FSChattelReligionistCreed": [
 			{
 				title: "Chattel Religionist Creed",
diff --git a/js/003-data/slaveSummaryData.js b/js/003-data/slaveSummaryData.js
index 465f67c7e32e73fd66cb580fb3be8a91025f811f..14967b216d5b8e57b31358b7a27339873882e131 100644
--- a/js/003-data/slaveSummaryData.js
+++ b/js/003-data/slaveSummaryData.js
@@ -301,6 +301,11 @@ App.Data.SlaveSummary = {
 				95: "Pregnancy kink",
 				100: "Pregnancy fetish"
 			},
+			"bestiality": {
+				60: "Interest in bestiality",
+				95: "Bestiality kink",
+				100: "Bestiality fetish"
+			},
 			"none": "Sexually vanilla"
 		},
 		clothes: {
diff --git a/js/medicine/surgery/genitials/insemination.js b/js/medicine/surgery/genitials/insemination.js
index d76415d99f5969b856cc81cd156465a588abd80c..9505c907a3504d3690c6e730864afc640a004d8e 100644
--- a/js/medicine/surgery/genitials/insemination.js
+++ b/js/medicine/surgery/genitials/insemination.js
@@ -38,7 +38,7 @@ App.Medicine.Surgery.Reactions.Insemination = class extends App.Medicine.Surgery
 				r.push(`${He} leaves the surgery with a certain warmth in ${his} lower abdomen, ${he} knows that ${he} has been impregnated.`);
 			}
 			r.push(`${He}'s <span class="devotion inc">grateful</span> that you think ${him} worthy of carrying`);
-			if (slave.pregSource === -1) {
+			if (this.seedSource === V.PC) {
 				r.push(`your`);
 			} else {
 				r.push(`${this.seedSource.slaveName}'s`);
diff --git a/js/medicine/z001-organFarm/2-reproductiveOrgans.js b/js/medicine/z001-organFarm/2-reproductiveOrgans.js
index 016ba16eb157c5173c17c0b59bd484bacbb5b529..b7ef9391a478e0ca61fe40a7fb54249ebdd94288 100644
--- a/js/medicine/z001-organFarm/2-reproductiveOrgans.js
+++ b/js/medicine/z001-organFarm/2-reproductiveOrgans.js
@@ -163,7 +163,7 @@ App.Medicine.OrganFarm.AnalWombImplantAction = class extends App.Medicine.OrganF
 		super({
 			name: "Implant",
 			surgeryProcedure: App.Medicine.Surgery.Procedures.OFAddMPreg,
-			surgeryProcedureParams: [],
+			surgeryProcedureParams: [eggType, pregData],
 			canImplant: s => ((this.eggType === "human" || V.animalTesticles > 0) && s.ovaries === 0 && s.vagina <= -1 && s.mpreg === 0 && s.bellyImplant < 0),
 			implantError: s => {
 				if (this.eggType !== "human" && V.animalTesticles === 0) {
diff --git a/src/002-config/fc-version.js b/src/002-config/fc-version.js
index e2a43ee391c8dded736fcb3cad8289fb5013d1b0..a7d824c32f002781ac6a44e5bb07d7f304c062a2 100644
--- a/src/002-config/fc-version.js
+++ b/src/002-config/fc-version.js
@@ -2,5 +2,5 @@ App.Version = {
 	base: "0.10.7.1", // The vanilla version the mod is based off of, this should never be changed.
 	pmod: "4.0.0-alpha.17",
 	commitHash: null,
-	release: 1175, // When getting close to 2000, please remove the check located within the onLoad() function defined at line five of src/js/eventHandlers.js.
+	release: 1178, // When getting close to 2000, please remove the check located within the onLoad() function defined at line five of src/js/eventHandlers.js.
 };
diff --git a/src/Corporation/manageCorporation.js b/src/Corporation/manageCorporation.js
index 07e199874990cb6c8f7ef257f59032a81759557b..5a1e1364c775dd2211f86f4bfd4740877a44f6fe 100644
--- a/src/Corporation/manageCorporation.js
+++ b/src/Corporation/manageCorporation.js
@@ -12,9 +12,27 @@ App.Corporate.manage = function() {
 		if (App.Corporate.getStored("Incorporated") === 0) {
 			f.append(foundingPage());
 		} else {
-			App.UI.DOM.appendNewElement("h1", f, "Corporation Overview");
+			App.UI.DOM.appendNewElement("h1", f, `Corporation Overview`);
+			App.UI.DOM.appendNewElement("h2", f,
+				App.UI.DOM.link(V.corp.Name, () => {
+					if (Dialog.isOpen()) {
+						Dialog.close();
+					}
+
+					Dialog.setup("Rename");
+
+					const frag = new DocumentFragment();
+
+					frag.append(App.UI.DOM.makeTextBox(V.corp.Name, str => { V.corp.Name = str; App.UI.reload(); }));
+
+					$(Dialog.body()).empty().append(frag);
+
+					Dialog.open();
+				}), ["white", "margin-bottom"]
+			);
+
 			if (App.Corporate.getStored("Founded")) {
-				App.UI.DOM.appendNewElement("div", f, `Founded on ${asDateString(App.Corporate.getStored("Founded"))}.`, "founding");
+				App.UI.DOM.appendNewElement("div", f, `Founded on ${asDateString(App.Corporate.getStored("Founded"))}.`, ["founding"]);
 			}
 
 			f.append(App.Corporate.writeLedger(App.Corporate.ledger.old, V.week - 1));
@@ -390,7 +408,7 @@ App.Corporate.manage = function() {
 		if (index >= 0) {
 			let nextIndex = index + 1;
 			V.dividendRatio = dividend;/* Normalize */
-			div.append(`The corporation is currently reserving ${Math.trunc(dividend * 100)}% of its profit to be paid out as dividends. `);
+			div.append(`${V.corp.Name} is currently reserving ${Math.trunc(dividend * 100)}% of its profit to be paid out as dividends. `);
 			const links = [];
 			if (index > 0) {
 				links.push(App.UI.DOM.link("Increase Ratio", () => {
@@ -411,7 +429,7 @@ App.Corporate.manage = function() {
 			}
 			div.append(App.UI.DOM.generateLinksStrip(links));
 		} else {
-			div.append(`The corporation is currently not reserving a portion of its profit to be paid out as dividends. `);
+			div.append(`${V.corp.Name} is currently not reserving a portion of its profit to be paid out as dividends. `);
 			div.append(App.UI.DOM.link("Increase Ratio", () => {
 				V.dividendRatio = dividends[dividends.length - 1];
 				refresh();
@@ -520,7 +538,7 @@ App.Corporate.manage = function() {
 		let splitStockConstants = App.Corporate.stockSplits;
 
 		r = [];
-		r.push(`The corporation can perform a stock split to increase the number of stocks while maintaining the same owned value. This requires paying a market fee of`);
+		r.push(`${V.corp.Name} can perform a stock split to increase the number of stocks while maintaining the same owned value. This requires paying a market fee of`);
 		r.push(App.UI.DOM.makeElement("span", cashFormat(splitFeeValue), ["cash", "dec"]));
 		r.push(`plus a per-share fee depending on the type of split being done.`);
 
@@ -588,9 +606,9 @@ App.Corporate.manage = function() {
 			// Spending tokens on new specializations
 			const r = [];
 			if (V.corp.SpecToken > 1) {
-				r.push(`Your corporation has ${V.corp.SpecToken} specializations left.`);
+				r.push(`${V.corp.Name} has ${V.corp.SpecToken} specializations left.`);
 			} else {
-				r.push(`Your corporation has one specialization left.`);
+				r.push(`${V.corp.Name} has one specialization left.`);
 			}
 			if (V.corp.SpecTimer > 0) {
 				r.push(`You have recently changed specializations and the corporation needs`);
diff --git a/src/Mods/Catmod/events/nonRandom/projectNComplete.js b/src/Mods/Catmod/events/nonRandom/projectNComplete.js
index c695bdc02fbdeb1cc8483fc40cec141e40b119df..2c0f0ace406cb01adafe2bf8f3ae22b12d8e021b 100644
--- a/src/Mods/Catmod/events/nonRandom/projectNComplete.js
+++ b/src/Mods/Catmod/events/nonRandom/projectNComplete.js
@@ -9,48 +9,21 @@ App.Events.SEProjectNComplete = class SEProjectNComplete extends App.Events.Base
 	execute(node) {
 		V.bodyPuristRiot = 1;
 		V.projectN.public = 1;
-		const slave = GenerateNewSlave("XX", {
-			maxAge: 16, minAge: 16, disableDisability: 1, race: "catgirl", nationality: "Stateless"
-		});
+
+		const slave = growCatgirl("XX", {minAge: 16, maxAge: 16});
 		slave.origin = "$He is a vat-grown catgirl, the world's first. You painstakingly grew $him yourself over months in the expensive Project N, a cutting-edge biotechnology experiment led by Doctor Nieskowitz.";
 		slave.face = random(75, 100);
-		slave.faceShape = "feline";
 		slave.slaveName = V.subjectDeltaName;
 		slave.birthName = V.subjectDeltaName;
-		slave.slaveSurname = "";
-		slave.birthSurname = "";
-		slave.career = "an orphan";
-		slave.intelligenceImplant = 0;
 		slave.hColor = "white";
 		slave.override_H_Color = 1; // TODO: Identifier 'override_H_Color' is not in camel case
 		slave.origHColor = "white";
 		slave.skin = "pure white";
 		slave.origSkin = "pure white";
 		slave.override_Skin = 1; // TODO: Identifier 'override_Skin' is not in camel case
-		slave.teeth = "fangs";
-		slave.devotion = 20;
-		slave.trust = 30;
 		slave.boobs = 300;
-		slave.earShape = "none";
-		slave.earT = "cat";
 		slave.earTColor = slave.hColor;
-		slave.earImplant = 1;
-		slave.tailShape = "cat";
 		slave.tailColor = slave.hColor;
-		slave.eye.left.pupil = "catlike";
-		slave.eye.right.pupil = "catlike";
-		slave.weight = 10;
-		slave.muscles = 0;
-		slave.waist = 10;
-		slave.skill.vaginal = 0;
-		slave.vagina = 0;
-		slave.skill.oral = 0;
-		slave.skill.anal = 0;
-		slave.anus = 0;
-		slave.skill.whoring = 0;
-		slave.skill.entertainment = 0;
-		slave.canRecruit = 0;
-		slave.accent = 4;
 
 		App.Events.addParagraph(node, [`It's finally time. Nieskowitz greets you with a rare smile as you enter the genetics lab, showing you to the tube where ${V.subjectDeltaName} floats unconscious. Far from the blob of pinkish flesh she once was, ${V.subjectDeltaName} is now a fully-formed humanoid, covered in a layer of beautiful, snow-white fur and topped with twitching, pointed cat ears. You can hear the bustle of the media, journalists who somehow found out about ${V.subjectDeltaName}'s near completion and are all but breaking down the lab's door trying to get a good look in.`]);
 		App.Events.addParagraph(node, [`"Be aware that she won't have any instinctive knowledge of our language. Frankly, I don't know if she'll be capable of real human speech at all, honestly. This is a first for me, too. Try and keep her away from any cameras in her face, they're likely to frighten her. Anyway, I guess she's ready. Are you?"`]);
diff --git a/src/Mods/Catmod/events/reRecruit/runawayCat.js b/src/Mods/Catmod/events/reRecruit/runawayCat.js
index 5eb22633ad35d6dfde31d9e4c8d11fca8ecdeab1..7b4a1015f5b0175d39b28f4054cce597c0a25451 100644
--- a/src/Mods/Catmod/events/reRecruit/runawayCat.js
+++ b/src/Mods/Catmod/events/reRecruit/runawayCat.js
@@ -20,7 +20,7 @@ App.Events.recRunawayCat = class recRunawayCat extends App.Events.BaseEvent {
 		const {He, he, his, him, girl} = getPronouns(slave);
 		let r = [];
 
-		r.push(`Coming to your desk in the morning, you see that your assistant has noted that you have a 'pressing' piece of business to attend to. With a wave of your hand, you bring up the notification to see that a runaway slave has apparently been waiting outside your penthouse for the entire night. What's more, ${he}'s owned by a prominent rival arcology owner within the cluster - and a cat${girl}, to boot. Apparently, according to the short, hand-scrawled letter that ${V.assistant.name} has digitized into the notification, ${his} former master regularly beat ${him} both out of frustration and for pleasure, and ${he}'s approached you hoping for a better life in the slavery that's defined ${his} existence.`);
+		r.push(`Coming to your desk in the morning, you see that your assistant has noted that you have a 'pressing' piece of business to attend to. With a wave of your hand, you bring up the notification to see that a runaway slave has apparently been waiting outside your penthouse for the entire night. What's more, ${he}'s owned by a prominent rival arcology owner within the cluster - and ${he}'s a cat${girl}, to boot. Apparently, according to the short, hand-scrawled letter that ${V.assistant.name} has digitized into the notification, ${his} former master regularly beat ${him} both out of frustration and for pleasure, and ${he}'s approached you hoping for a better life in the slavery that's defined ${his} existence.`);
 		App.Events.addParagraph(node, r);
 		r = [];
 		r.push(`The exclusive and novel nature of cat${girl}s makes ${him} an exceptionally valuable slave, and the genetic modification that created ${him} has ensured that the feline face you look over in the automated overview is particularly attractive, but taking ${him} under your wing away from another wealthy plutocrat would cause a whole score of problems. Deciding it'd be best not to make more enemies than you have to, you call up the rival on your personal phone, who answers after only a few seconds. After you explain the situation, the abusive oligarch chuckles, admits that he hadn't even noticed the cat${girl} leaving, and says he'll formally sell ${him} over to you for "just" twenty thousand credits. Otherwise, he'll give you a little cash to show his appreciation for sending the runaway back home.`);
diff --git a/src/Mods/Catmod/events/scheduled/vatcatboy.js b/src/Mods/Catmod/events/scheduled/vatcatboy.js
index a6c76a599b13f6022a88fcdaedbf7e5eb33bfbd4..8cc88296dd9105288275337e80d5723a4003dc06 100644
--- a/src/Mods/Catmod/events/scheduled/vatcatboy.js
+++ b/src/Mods/Catmod/events/scheduled/vatcatboy.js
@@ -7,39 +7,8 @@ App.Events.SEVatCatBoy = class SEVatCatBoy extends App.Events.BaseEvent {
 	}
 
 	execute(node) {
-		const slave = GenerateNewSlave("XY", {
-			minAge: 16, maxAge: 16, nationality: "Stateless", disableDisability: 1, race: "catgirl"
-		});
+		const slave = growCatgirl("XY", {minAge: 16, maxAge: 16});
 		slave.origin = "$He is a vat-grown catboy created by Dr. Nieskowitz and the science team in your genelab.";
-		slave.face = random(55, 95);
-		slave.faceShape = "feline";
-		slave.slaveName = App.Data.misc.catSlaveNames.random();
-		slave.birthName = slave.slaveName;
-		slave.slaveSurname = "";
-		slave.birthSurname = "";
-		slave.career = "an orphan";
-		slave.intelligenceImplant = 0;
-		slave.teeth = "fangs";
-		slave.devotion = 20;
-		slave.trust = 30;
-		slave.earShape = "none";
-		slave.earT = "cat";
-		slave.earTColor = slave.hColor;
-		slave.earImplant = 1;
-		slave.tailShape = "cat";
-		slave.tailColor = slave.hColor;
-		slave.eye.left.pupil = "catlike";
-		slave.eye.right.pupil = "catlike";
-		slave.weight = 10;
-		slave.muscles = 0;
-		slave.waist = 10;
-		slave.skill.oral = 0;
-		slave.skill.anal = 0;
-		slave.anus = 0;
-		slave.skill.whoring = 0;
-		slave.skill.entertainment = 0;
-		slave.accent = 4;
-		slave.canRecruit = 0;
 
 		App.Events.addParagraph(node, [
 			`With their latest genemodding project complete, Dr. Nieskowitz proudly presents to you a healthy, unconscious catboy, floating suspended in the tube of thick green liquid you use to grow them. "Looks like he came out just fine." The aging doctor says with an authoritative gesture. "Another successful project. ${slave.slaveName} is going to make a lovely addition to your little collection."`
diff --git a/src/Mods/Catmod/events/scheduled/vatcatgirl.js b/src/Mods/Catmod/events/scheduled/vatcatgirl.js
index 92ccdaadc771ca52ede9205b7cb81870722de349..10074a6af968177ca1c89170c163123181c4c195 100644
--- a/src/Mods/Catmod/events/scheduled/vatcatgirl.js
+++ b/src/Mods/Catmod/events/scheduled/vatcatgirl.js
@@ -7,41 +7,9 @@ App.Events.SEVatCatGirl = class SEVatCatGirl extends App.Events.BaseEvent {
 	}
 
 	execute(node) {
-		const slave = GenerateNewSlave("XX", {
-			minAge: 16, maxAge: 16, nationality: "Stateless", disableDisability: 1, race: "catgirl"
-		});
+		const slave = growCatgirl("XX", {minAge: 16, maxAge: 16});
 		slave.origin = "$He is a vat-grown catgirl created by Dr. Nieskowitz and the science team in your genelab.";
-		slave.face = random(55, 95);
-		slave.faceShape = "feline";
-		slave.slaveName = App.Data.misc.catSlaveNames.random();
-		slave.birthName = slave.slaveName;
-		slave.slaveSurname = "";
-		slave.birthSurname = "";
-		slave.career = "an orphan";
-		slave.intelligenceImplant = 0;
-		slave.devotion = 20;
-		slave.trust = 30;
-		slave.earShape = "none";
-		slave.teeth = "fangs";
-		slave.earT = "cat";
-		slave.earTColor = slave.hColor;
-		slave.earImplant = 1;
-		slave.tailShape = "cat";
-		slave.tailColor = slave.hColor;
-		slave.eye.left.pupil = "catlike";
-		slave.eye.right.pupil = "catlike";
-		slave.weight = 10;
-		slave.muscles = 0;
-		slave.waist = 10;
-		slave.skill.vaginal = 0;
-		slave.vagina = 0;
-		slave.skill.oral = 0;
-		slave.skill.anal = 0;
-		slave.anus = 0;
-		slave.skill.whoring = 0;
-		slave.skill.entertainment = 0;
-		slave.accent = 4;
-		slave.canRecruit = 0;
+
 		App.Events.addParagraph(node, [`With their latest genemodding project complete, Dr. Nieskowitz proudly presents to you a healthy, unconscious catgirl, floating suspended in the tube of thick green liquid you use to grow them. "Looks like she came out just fine." The aging doctor says with an authoritative gesture. "Another successful project. ${slave.slaveName} is going to make a lovely addition to your little collection."`]);
 
 		App.Events.addResponses(node, [new App.Events.Result(`Bring your new slave back home`, home)]);
diff --git a/src/Mods/Catmod/generateCatgirl.js b/src/Mods/Catmod/generateCatgirl.js
new file mode 100644
index 0000000000000000000000000000000000000000..2bd8936d82b0b793efde344dbc5fec3d48a5d917
--- /dev/null
+++ b/src/Mods/Catmod/generateCatgirl.js
@@ -0,0 +1,55 @@
+/**
+ * Generates a new vat-grown catgirl that was grown in this arcology.
+ * @returns {App.Entity.SlaveState}
+ * @param {"XY"|"XX"|""} [sex] null or omit to use default rules
+ * @param {Object} [Obj]
+ */
+globalThis.growCatgirl = function(sex, {
+	minAge,
+	maxAge,
+} = {}) {
+	const slave = GenerateNewSlave(sex, {
+		minAge, maxAge, nationality: "Stateless", disableDisability: 1, race: "catgirl"
+	});
+	slave.face = random(55, 95);
+	slave.faceShape = "feline";
+	slave.slaveName = App.Data.misc.catSlaveNames.random();
+	slave.birthName = slave.slaveName;
+	slave.career = "an orphan";
+	slave.intelligenceImplant = 0;
+	slave.devotion = 20;
+	slave.trust = 30;
+	slave.earShape = "none";
+	slave.teeth = "fangs";
+	slave.earT = "cat";
+	slave.earTColor = slave.hColor;
+	slave.earImplant = 1;
+	slave.tailShape = "cat";
+	slave.tailColor = slave.hColor;
+	slave.eye.left.pupil = "catlike";
+	slave.eye.right.pupil = "catlike";
+	slave.weight = 10;
+	slave.muscles = 0;
+	slave.waist = 10;
+	slave.vagina = Math.min(slave.vagina, 0);
+	slave.anus = 0;
+	slave.accent = 4;
+	slave.canRecruit = 0;
+	slave.skill = new App.Entity.SlaveSkillsState();
+	slave.piercing = new App.Entity.completePiercingState();
+
+	// they're genetically engineered and very expensive, so go ahead and make their genes conform a bit better to local expectations...
+	const arc = V.arcologies[0];
+	if (arc.FSStatuesqueGlorification !== "unset") {
+		slave.height = Math.min(slave.height + 10, 274);
+	} else if (arc.FSPetiteAdmiration !== "unset") {
+		slave.height = Math.max(slave.height - 10, 85);
+	}
+	if (arc.FSIntellectualDependency !== "unset") {
+		slave.intelligence = Math.max(slave.intelligence - 15, -100);
+	} else if (arc.FSSlaveProfessionalism !== "unset") {
+		slave.intelligence = Math.min(slave.intelligence + 15, 100);
+	}
+
+	return slave;
+};
diff --git a/src/Mods/SpecialForce/AfterActionReport.js b/src/Mods/SpecialForce/AfterActionReport.js
index 63eb97b13da9c92bbab746d072e6c083ba7f8bf4..bc01d9490402d727d234162877b02e003d9f573e 100644
--- a/src/Mods/SpecialForce/AfterActionReport.js
+++ b/src/Mods/SpecialForce/AfterActionReport.js
@@ -1,5 +1,5 @@
 /**
- * @returns {[DocumentFragment, number]}
+ * @returns {[text: DocumentFragment, upkeep: number, profit: number]}
  */
 App.Mods.SF.AAR = function() {
 	const endWeekCall = V.endweekFlag ? 1 : 0;
@@ -11,358 +11,348 @@ App.Mods.SF.AAR = function() {
 	let income = 0;
 	let incomeAdd = 0;
 	const node = new DocumentFragment();
-	if (V.SF.FS.Tension > 100 && endWeekCall > 0) {
-		if (V.SF.FS.BadOutcome === undefined) {
-			App.Mods.SF.fsIntegration.badOutcome();
+	let Multiplier = {
+		action: 1,
+		troop: 1,
+		unit: 1,
+		depravity: 1
+	};
+	let FNG = 10 + (V.SF.ArmySize / 10);
+	let unitCap = 2500;
+	let Trade = 0.025;
+	let cost = {a: 10, b: 10};
+	let N0 = 1 + (0.01 * (size / 6));
+	let N1 = 1 + (0.01 * (size / 3));
+
+	let SFD = V.SF.Depravity;
+	V.SF.ArmySize = Math.clamp(V.SF.ArmySize, 0, unitCap);
+	if (endWeekCall > 0) {
+		if (V.SF.ArmySize < 100) {
+			V.SF.ArmySize += Math.ceil(jsRandom(2, 5));
 		} else {
-			App.UI.DOM.appendNewElement("div", node, `This week your arcology lost a bit of prosperity and large amount of reputation, due to the looming threat that The Colonel and her forces may resurface.`);
-			V.arcologies[0].prosperity -= 25;
-			V.rep = Math.clamp(V.rep, 0, 17500);
-		}
-	} else if (V.SF.FS.Tension < 100) {
-		let Multiplier = {
-			action: 1,
-			troop: 1,
-			unit: 1,
-			depravity: 1
-		};
-		let FNG = 10 + (V.SF.ArmySize / 10);
-		let unitCap = 2500;
-		let Trade = 0.025;
-		let cost = {a: 10, b: 10};
-		let N0 = 1 + (0.01 * (size / 6));
-		let N1 = 1 + (0.01 * (size / 3));
-
-		let SFD = V.SF.Depravity;
-		V.SF.ArmySize = Math.clamp(V.SF.ArmySize, 0, unitCap);
-		if (endWeekCall > 0) {
-			if (V.SF.ArmySize < 100) {
-				V.SF.ArmySize += Math.ceil(jsRandom(2, 5));
+			if (V.SF.Target === "recruit") {
+				V.SF.ArmySize -= Math.ceil(jsRandom(1 * V.SF.ArmySize / 1000, 0));
+			} else if (V.SF.Target === "raiding") {
+				V.SF.ArmySize -= Math.ceil(jsRandom(1.15 * V.SF.ArmySize / 1000, -1.20 * V.SF.ArmySize / 1000));
 			} else {
-				if (V.SF.Target === "recruit") {
-					V.SF.ArmySize -= Math.ceil(jsRandom(1 * V.SF.ArmySize / 1000, 0));
-				} else if (V.SF.Target === "raiding") {
-					V.SF.ArmySize -= Math.ceil(jsRandom(1.15 * V.SF.ArmySize / 1000, -1.20 * V.SF.ArmySize / 1000));
-				} else {
-					V.SF.ArmySize -= Math.ceil(jsRandom(1.10 * V.SF.ArmySize / 1000, -1.15 * V.SF.ArmySize / 1000));
-				}
+				V.SF.ArmySize -= Math.ceil(jsRandom(1.10 * V.SF.ArmySize / 1000, -1.15 * V.SF.ArmySize / 1000));
 			}
 		}
+	}
 
-		if (V.SF.ArmySize > 200) {
-			Trade += 0.05 * (V.SF.ArmySize / 200);
-			Multiplier.troop += V.SF.ArmySize / 200;
-			upkeep += V.SF.ArmySize * 33 * 1/N0;
-			if (V.secExpEnabled > 0 && endWeekCall > 0) {
-				App.Mods.SecExp.authorityX((25 * (Math.ceil(V.SF.ArmySize / 200))) + size * 10);
-			}
+	if (V.SF.ArmySize > 200) {
+		Trade += 0.05 * (V.SF.ArmySize / 200);
+		Multiplier.troop += V.SF.ArmySize / 200;
+		upkeep += V.SF.ArmySize * 33 * 1/N0;
+		if (V.secExpEnabled > 0 && endWeekCall > 0) {
+			App.Mods.SecExp.authorityX((25 * (Math.ceil(V.SF.ArmySize / 200))) + size * 10);
 		}
+	}
 
-		if (S.Firebase > 0) {
-			FNG += S.Firebase;
-			Trade += 0.5 * S.Firebase;
-			Multiplier.unit += 7.5 * S.Firebase + 2 * Math.pow(S.Firebase, 2) * cost.a;
-			incomeAdd += (5000 * S.Firebase)/ Math.max(S.Firebase - 1, 1);
-			upkeep += (95 * 10 + S.Firebase) * cost.b;
-		}
-		if (S.Armoury > 0) {
-			FNG += 2 * S.Armoury;
-			Trade += 0.25 * S.Armoury;
-			Multiplier.unit += 7.5 * S.Armoury + 2 * Math.pow(S.Armoury, 2) * cost.a;
-			incomeAdd += (3000 * S.Armoury)/Math.max(S.Armoury - 1, 1);
-			upkeep += (55 * S.Armoury) * cost.b;
+	if (S.Firebase > 0) {
+		FNG += S.Firebase;
+		Trade += 0.5 * S.Firebase;
+		Multiplier.unit += 7.5 * S.Firebase + 2 * Math.pow(S.Firebase, 2) * cost.a;
+		incomeAdd += (5000 * S.Firebase)/ Math.max(S.Firebase - 1, 1);
+		upkeep += (95 * 10 + S.Firebase) * cost.b;
+	}
+	if (S.Armoury > 0) {
+		FNG += 2 * S.Armoury;
+		Trade += 0.25 * S.Armoury;
+		Multiplier.unit += 7.5 * S.Armoury + 2 * Math.pow(S.Armoury, 2) * cost.a;
+		incomeAdd += (3000 * S.Armoury)/Math.max(S.Armoury - 1, 1);
+		upkeep += (55 * S.Armoury) * cost.b;
+	}
+	if (S.Drugs > 0) {
+		FNG += S.Drugs;
+		Trade += 0.25 * S.Drugs;
+		Multiplier.unit += 7.5 * S.Drugs + 2 * Math.pow(S.Drugs, 2) * cost.a;
+		incomeAdd += (3000 * S.Drugs)/Math.max(S.Drugs - 1, 1);
+		upkeep += (35 * S.Drugs) * cost.b;
+	}
+	if (S.Firebase >= 1) {
+		if (S.AV > 0) {
+			FNG += S.AV;
+			Trade += 0.25 * S.AV;
+			Multiplier.unit += 7.5 * S.AV + 2 * Math.pow(S.AV, 2) * cost.a;
+			upkeep += (89 * S.AV) * cost.b;
 		}
-		if (S.Drugs > 0) {
-			FNG += S.Drugs;
-			Trade += 0.25 * S.Drugs;
-			Multiplier.unit += 7.5 * S.Drugs + 2 * Math.pow(S.Drugs, 2) * cost.a;
-			incomeAdd += (3000 * S.Drugs)/Math.max(S.Drugs - 1, 1);
-			upkeep += (35 * S.Drugs) * cost.b;
+		if (S.TV > 0) {
+			FNG += S.TV;
+			Trade += 0.25 * S.TV;
+			Multiplier.unit += 7.5 * S.TV + 2 * Math.pow(S.TV, 2) * cost.a;
+			upkeep += (89 * S.TV) * cost.b;
 		}
-		if (S.Firebase >= 1) {
-			if (S.AV > 0) {
-				FNG += S.AV;
-				Trade += 0.25 * S.AV;
-				Multiplier.unit += 7.5 * S.AV + 2 * Math.pow(S.AV, 2) * cost.a;
-				upkeep += (89 * S.AV) * cost.b;
-			}
-			if (S.TV > 0) {
-				FNG += S.TV;
-				Trade += 0.25 * S.TV;
-				Multiplier.unit += 7.5 * S.TV + 2 * Math.pow(S.TV, 2) * cost.a;
-				upkeep += (89 * S.TV) * cost.b;
-			}
-			if (S.PGT > 0) {
-				FNG += S.PGT;
-				Trade += 0.25 * S.PGT;
-				Multiplier.unit += 15 * S.PGT + 3 * Math.pow(S.PGT, 2) * cost.a;
-				upkeep += (100 * S.PGT) * cost.b;
-			}
+		if (S.PGT > 0) {
+			FNG += S.PGT;
+			Trade += 0.25 * S.PGT;
+			Multiplier.unit += 15 * S.PGT + 3 * Math.pow(S.PGT, 2) * cost.a;
+			upkeep += (100 * S.PGT) * cost.b;
 		}
+	}
 
-		if (S.Firebase >= 2 && S.Drones > 0) {
-			FNG += S.Drones;
-			Trade += 0.5 * S.Drones;
-			Multiplier.unit += 7.5 * S.Drones + 2 * Math.pow(S.Drones, 2) * cost.a;
-			upkeep += (50 * S.Drones) * cost.b;
-		}
+	if (S.Firebase >= 2 && S.Drones > 0) {
+		FNG += S.Drones;
+		Trade += 0.5 * S.Drones;
+		Multiplier.unit += 7.5 * S.Drones + 2 * Math.pow(S.Drones, 2) * cost.a;
+		upkeep += (50 * S.Drones) * cost.b;
+	}
 
-		if (S.Firebase >= 4) {
-			if (S.AA > 0) {
-				FNG += S.AA;
-				Trade += 0.25 * S.AA;
-				Multiplier.unit += 7.5 * S.AA + 2 * Math.pow(S.AA, 2) * cost.a;
-				upkeep += (100 * S.AA) * cost.b;
-			}
-			if (S.TA > 0) {
-				FNG += S.TA;
-				Trade += 0.25 * S.TA;
-				Multiplier.unit += 7.5 * S.TA + 2 * Math.pow(S.TA, 2) * cost.a;
-				upkeep += (100 * S.TA) * cost.b;
-			}
-			if (S.SpacePlane > 0) {
-				FNG += S.SpacePlane;
-				Trade += 0.25 * S.SpacePlane;
-				Multiplier.unit += 7.5 * S.SpacePlane + 2 * Math.pow(S.SpacePlane, 2) * cost.a;
-				upkeep += (100 * S.SpacePlane) * cost.b;
-			}
-			if (S.GunS > 0) {
-				FNG += S.GunS;
-				Trade += 0.25 * S.GunS;
-				Multiplier.unit += 12 * S.GunS + 3 * Math.pow(S.GunS, 2) * cost.a;
-				upkeep += (70 * S.GunS) * cost.b;
-			}
-			if (S.Satellite > 0 && S.SatLaunched > 0) {
-				FNG += S.Satellite;
-				Trade += 0.25 * S.Satellite;
-				Multiplier.unit += 15 * S.Satellite + 5 * Math.pow(S.Satellite, 2) * cost.a;
-				upkeep += (85 * S.Satellite) * cost.b;
-			}
-			if (S.GiantRobot > 0) {
-				FNG += S.GiantRobot;
-				Trade += 0.25 * S.GiantRobot;
-				Multiplier.unit += 15 * S.GiantRobot + 5 * Math.pow(S.GiantRobot, 2) * cost.a;
-				upkeep += (95 * S.GiantRobot) * cost.b;
-			}
-			if (S.MissileSilo > 0) {
-				FNG += S.MissileSilo;
-				Trade += 0.25 * S.MissileSilo;
-				Multiplier.unit += 15 * S.MissileSilo + 5 * Math.pow(S.MissileSilo, 2) * cost.a;
-				upkeep += (100 * S.MissileSilo) * cost.b;
-			}
+	if (S.Firebase >= 4) {
+		if (S.AA > 0) {
+			FNG += S.AA;
+			Trade += 0.25 * S.AA;
+			Multiplier.unit += 7.5 * S.AA + 2 * Math.pow(S.AA, 2) * cost.a;
+			upkeep += (100 * S.AA) * cost.b;
 		}
-
-		if (S.AircraftCarrier > 0) {
-			FNG += S.AircraftCarrier;
-			Trade += 0.25 * S.AircraftCarrier;
-			Multiplier.unit += 9 * S.AircraftCarrier + 3 * Math.pow(S.AircraftCarrier, 2) * cost.a;
-			upkeep += (80 * S.AircraftCarrier) * cost.b;
+		if (S.TA > 0) {
+			FNG += S.TA;
+			Trade += 0.25 * S.TA;
+			Multiplier.unit += 7.5 * S.TA + 2 * Math.pow(S.TA, 2) * cost.a;
+			upkeep += (100 * S.TA) * cost.b;
 		}
-		if (S.Sub > 0) {
-			FNG += S.Sub;
-			Trade += 0.25 * S.Sub;
-			Multiplier.unit += 7.5 * S.Sub + 2 * Math.pow(S.Sub, 2) * cost.a;
-			upkeep += (90 * S.Sub) * cost.b;
+		if (S.SpacePlane > 0) {
+			FNG += S.SpacePlane;
+			Trade += 0.25 * S.SpacePlane;
+			Multiplier.unit += 7.5 * S.SpacePlane + 2 * Math.pow(S.SpacePlane, 2) * cost.a;
+			upkeep += (100 * S.SpacePlane) * cost.b;
 		}
-		if (S.HAT > 0) {
-			FNG += S.HAT;
-			Trade += 0.25 * S.HAT;
-			Multiplier.unit += 7.5 * S.HAT + 2 * Math.pow(S.HAT, 2) * cost.a;
-			upkeep += (70 * S.HAT) * cost.b;
+		if (S.GunS > 0) {
+			FNG += S.GunS;
+			Trade += 0.25 * S.GunS;
+			Multiplier.unit += 12 * S.GunS + 3 * Math.pow(S.GunS, 2) * cost.a;
+			upkeep += (70 * S.GunS) * cost.b;
 		}
-
-		switch (V.SF.Colonel.Core) {
-			case "kind":
-				FNG += 10;
-				Trade += 0.15;
-				SFD -= 0.15;
-				break;
-			case "cruel":
-				Trade -= 0.15;
-				SFD += 0.15;
-				break;
-			case "brazen":
-				FNG += 15;
-				Multiplier.unit += 0.5;
-				break;
-			case "jaded":
-				Trade -= 0.05;
-				SFD += 0.05;
-				break;
-			case "shell shocked":
-				Trade += 0.05;
-				SFD -= 0.05;
-				Multiplier.unit -= 0.5;
-				break;
+		if (S.Satellite > 0 && S.SatLaunched > 0) {
+			FNG += S.Satellite;
+			Trade += 0.25 * S.Satellite;
+			Multiplier.unit += 15 * S.Satellite + 5 * Math.pow(S.Satellite, 2) * cost.a;
+			upkeep += (85 * S.Satellite) * cost.b;
 		}
-
-		if (V.SF.Target === "raiding") {
-			SFD += 0.05;
-			Multiplier.action += 0.5;
-		} else if (V.SF.Target === "secure") {
-			SFD -= 0.05;
-			Multiplier.action += 0.2;
-		} else {
-			SFD -= 0.1;
-			Multiplier.action -= 0.5;
+		if (S.GiantRobot > 0) {
+			FNG += S.GiantRobot;
+			Trade += 0.25 * S.GiantRobot;
+			Multiplier.unit += 15 * S.GiantRobot + 5 * Math.pow(S.GiantRobot, 2) * cost.a;
+			upkeep += (95 * S.GiantRobot) * cost.b;
 		}
-		if (V.SF.ROE === "free") {
-			Multiplier.action *= 0.8;
-			SFD += 0.05;
-			Trade += Trade * 0.95;
-		} else if (V.SF.ROE === "hold") {
-			Multiplier.action *= 1.1;
-			SFD -= 0.05;
-			Trade += Trade * 1.05;
+		if (S.MissileSilo > 0) {
+			FNG += S.MissileSilo;
+			Trade += 0.25 * S.MissileSilo;
+			Multiplier.unit += 15 * S.MissileSilo + 5 * Math.pow(S.MissileSilo, 2) * cost.a;
+			upkeep += (100 * S.MissileSilo) * cost.b;
 		}
-		if (V.SF.Regs === "none") {
-			Multiplier.action *= 0.8;
+	}
+
+	if (S.AircraftCarrier > 0) {
+		FNG += S.AircraftCarrier;
+		Trade += 0.25 * S.AircraftCarrier;
+		Multiplier.unit += 9 * S.AircraftCarrier + 3 * Math.pow(S.AircraftCarrier, 2) * cost.a;
+		upkeep += (80 * S.AircraftCarrier) * cost.b;
+	}
+	if (S.Sub > 0) {
+		FNG += S.Sub;
+		Trade += 0.25 * S.Sub;
+		Multiplier.unit += 7.5 * S.Sub + 2 * Math.pow(S.Sub, 2) * cost.a;
+		upkeep += (90 * S.Sub) * cost.b;
+	}
+	if (S.HAT > 0) {
+		FNG += S.HAT;
+		Trade += 0.25 * S.HAT;
+		Multiplier.unit += 7.5 * S.HAT + 2 * Math.pow(S.HAT, 2) * cost.a;
+		upkeep += (70 * S.HAT) * cost.b;
+	}
+
+	switch (V.SF.Colonel.Core) {
+		case "kind":
+			FNG += 10;
+			Trade += 0.15;
+			SFD -= 0.15;
+			break;
+		case "cruel":
+			Trade -= 0.15;
+			SFD += 0.15;
+			break;
+		case "brazen":
+			FNG += 15;
+			Multiplier.unit += 0.5;
+			break;
+		case "jaded":
+			Trade -= 0.05;
 			SFD += 0.05;
-			Trade += Trade * 0.95;
-		} else if (V.SF.Regs === "strict") {
-			Multiplier.action *= 1.1;
+			break;
+		case "shell shocked":
+			Trade += 0.05;
 			SFD -= 0.05;
-			Trade += Trade * 1.05;
-			Multiplier.depravity = 1 + SFD;
-		}
-		if (SFD > -2) {
-			Trade *= 1 + SFD / 2;
-		}
+			Multiplier.unit -= 0.5;
+			break;
+	}
 
-		if (V.SF.Target === "recruit") {
-			FNG += FNG * 0.95;
+	if (V.SF.Target === "raiding") {
+		SFD += 0.05;
+		Multiplier.action += 0.5;
+	} else if (V.SF.Target === "secure") {
+		SFD -= 0.05;
+		Multiplier.action += 0.2;
+	} else {
+		SFD -= 0.1;
+		Multiplier.action -= 0.5;
+	}
+	if (V.SF.ROE === "free") {
+		Multiplier.action *= 0.8;
+		SFD += 0.05;
+		Trade += Trade * 0.95;
+	} else if (V.SF.ROE === "hold") {
+		Multiplier.action *= 1.1;
+		SFD -= 0.05;
+		Trade += Trade * 1.05;
+	}
+	if (V.SF.Regs === "none") {
+		Multiplier.action *= 0.8;
+		SFD += 0.05;
+		Trade += Trade * 0.95;
+	} else if (V.SF.Regs === "strict") {
+		Multiplier.action *= 1.1;
+		SFD -= 0.05;
+		Trade += Trade * 1.05;
+		Multiplier.depravity = 1 + SFD;
+	}
+	if (SFD > -2) {
+		Trade *= 1 + SFD / 2;
+	}
+
+	if (V.SF.Target === "recruit") {
+		FNG += FNG * 0.95;
+	} else {
+		FNG += FNG * 0.25;
+	}
+	FNG = Math.ceil(FNG / 2);
+
+	if (endWeekCall > 0) {
+		if (V.SF.Target === "secure") {
+			repX((Math.ceil(V.rep * ((Trade / 100) * 0.95))), "specialForces");
+			V.arcologies[0].prosperity = Math.ceil((V.arcologies[0].prosperity + (Trade / 10) * 0.95));
 		} else {
-			FNG += FNG * 0.25;
+			repX((Math.ceil(V.rep * (Trade / 100) * 0.25)), "specialForces");
+			V.arcologies[0].prosperity = Math.ceil(V.arcologies[0].prosperity + (Trade / 10) * 0.25);
 		}
-		FNG = Math.ceil(FNG / 2);
+	}
 
-		if (endWeekCall > 0) {
-			if (V.SF.Target === "secure") {
-				repX((Math.ceil(V.rep * ((Trade / 100) * 0.95))), "specialForces");
-				V.arcologies[0].prosperity = Math.ceil((V.arcologies[0].prosperity + (Trade / 10) * 0.95));
-			} else {
-				repX((Math.ceil(V.rep * (Trade / 100) * 0.25)), "specialForces");
-				V.arcologies[0].prosperity = Math.ceil(V.arcologies[0].prosperity + (Trade / 10) * 0.25);
-			}
-		}
+	income += (1 + Multiplier.troop / N0) * (1 + Multiplier.unit / N0) * (1 + Multiplier.action / N0) * (1 + Multiplier.depravity / N0);
+	upkeep += 30000 + (25000 * 1 / N1);
+	if (V.SF.Target === "raiding") {
+		income *= 1.25;
+	} else if (V.SF.Target === "secure") {
+		income *= 1.05;
+	} else { // When recruiting, upkeep is lowered, effect dependent on amount of soldiers. At max capacity, multiplier back to 1.
+		upkeep *= 0.75 + (V.SF.ArmySize/10000);
+	}
 
-		income += (1 + Multiplier.troop / N0) * (1 + Multiplier.unit / N0) * (1 + Multiplier.action / N0) * (1 + Multiplier.depravity / N0);
-		upkeep += 30000 + (25000 * 1 / N1);
-		if (V.SF.Target === "raiding") {
-			income *= 1.25;
-		} else if (V.SF.Target === "secure") {
-			income *= 1.05;
-		} else { // When recruiting, upkeep is lowered, effect dependent on amount of soldiers. At max capacity, multiplier back to 1.
-			upkeep *= 0.75 + (V.SF.ArmySize/10000);
+	if (V.economy.isBetween(33, 100)) {
+		let multiplier = (1.75 * Math.sqrt(Math.trunc(100000/V.economy-1000)/10)) + (0.2 * (Math.trunc(100000/V.economy-1000)/10));
+		income *= (1 + multiplier/100);
+	} else if (V.economy <= 33) { // There comes a point where a worse global economy no longer benefits your Special Forces.
+		let multiplier = (1.75 * Math.sqrt(Math.trunc(100000/33-1000)/10)) + (0.2 * (Math.trunc(100000/33-1000)/10));
+		income *= (1 + multiplier/100);
+	}
+	income = Math.ceil(income + incomeAdd);
+	upkeep = Math.ceil(upkeep);
+	profit = income - upkeep;
+
+	if (endWeekCall > 0) {
+		V.SF.ArmySize += FNG;
+		if (V.debugMode > 0) {
+			App.UI.DOM.appendNewElement("div", node, `income:${cashFormat(income)}, upkeep:${cashFormat(upkeep)}, profit:${cashFormat(profit)}, troop:${num((0.09+Multiplier.troop/N0).toFixed(2))}, unit:${num((0.09+Multiplier.unit/N0).toFixed(2))}, action:${num((0.09+Multiplier.action/N0).toFixed(2))}, depravity:${num((0.09+Multiplier.depravity/N0).toFixed(2))}, N0: ${N0} N1: ${N1}`);
 		}
 
-		if (V.economy.isBetween(33, 100)) {
-			let multiplier = (1.75 * Math.sqrt(Math.trunc(100000/V.economy-1000)/10)) + (0.2 * (Math.trunc(100000/V.economy-1000)/10));
-			income *= (1 + multiplier/100);
-		} else if (V.economy <= 33) { // There comes a point where a worse global economy no longer benefits your Special Forces.
-			let multiplier = (1.75 * Math.sqrt(Math.trunc(100000/33-1000)/10)) + (0.2 * (Math.trunc(100000/33-1000)/10));
-			income *= (1 + multiplier/100);
-		}
-		income = Math.ceil(income + incomeAdd);
-		upkeep = Math.ceil(upkeep);
-		profit = income - upkeep;
-
-		if (endWeekCall > 0) {
-			V.SF.ArmySize += FNG;
-			if (V.debugMode > 0) {
-				App.UI.DOM.appendNewElement("div", node, `income:${cashFormat(income)}, upkeep:${cashFormat(upkeep)}, profit:${cashFormat(profit)}, troop:${num((0.09+Multiplier.troop/N0).toFixed(2))}, unit:${num((0.09+Multiplier.unit/N0).toFixed(2))}, action:${num((0.09+Multiplier.action/N0).toFixed(2))}, depravity:${num((0.09+Multiplier.depravity/N0).toFixed(2))}, N0: ${N0} N1: ${N1}`);
-			}
-
-			cashX(income, "specialForces");
-			// We run this in economyJS.js now.
-			// cashX(forceNeg(upkeep), "specialForces");
-			V.SF.ArmySize = Math.clamp(V.SF.ArmySize, 0, unitCap);
-			V.arcologies[0].prosperity = Math.clamp(V.arcologies[0].prosperity, 0, V.AProsperityCap);
+		cashX(income, "specialForces");
+		// We run this in economyJS.js now.
+		// cashX(forceNeg(upkeep), "specialForces");
+		V.SF.ArmySize = Math.clamp(V.SF.ArmySize, 0, unitCap);
+		V.arcologies[0].prosperity = Math.clamp(V.arcologies[0].prosperity, 0, V.AProsperityCap);
 
-			if (V.SF.UC.Assign === 1 && V.SF.UC.Lock < 1) {
-				V.SF.UC.Assign = 0;
-			}
-			V.SF.Upgrade = 0;
+		if (V.SF.UC.Assign === 1 && V.SF.UC.Lock < 1) {
+			V.SF.UC.Assign = 0;
+		}
+		V.SF.Upgrade = 0;
 
-			const capSF = capFirstChar(V.SF.Lower || "the Special Force");
-			App.UI.DOM.appendNewElement("h3", node, `${capSF} (AO: ${V.terrain}) operational report:`);
-			App.UI.DOM.appendNewElement("span", node, ` ${capSF} focused their ${num(V.SF.ArmySize)} troops on`);
+		const capSF = capFirstChar(V.SF.Lower || "the Special Force");
+		App.UI.DOM.appendNewElement("h3", node, `${capSF} (AO: ${V.terrain}) operational report:`);
+		App.UI.DOM.appendNewElement("span", node, ` ${capSF} focused their ${num(V.SF.ArmySize)} troops on`);
 
-			if (V.SF.Target === "recruit") {
-				App.UI.DOM.appendNewElement("span", node, ` recruiting and training more personnel. Smaller parties ventured out to protect the arcology's trade routes and strike targets of opportunity.`);
-			} else if (V.SF.Target === "secure") {
-				App.UI.DOM.appendNewElement("span", node, ` securing the trade routes between the arcology and the surrounding area. Smaller parties ventured out to strike targets of opportunity and process new recruits.`);
-			} else {
-				App.UI.DOM.appendNewElement("span", node, ` locating and striking targets of opportunity, capturing both material loot and new slaves. Smaller parties secured the most important of the arcology's trade routes and processed new recruits.`);
-			}
+		if (V.SF.Target === "recruit") {
+			App.UI.DOM.appendNewElement("span", node, ` recruiting and training more personnel. Smaller parties ventured out to protect the arcology's trade routes and strike targets of opportunity.`);
+		} else if (V.SF.Target === "secure") {
+			App.UI.DOM.appendNewElement("span", node, ` securing the trade routes between the arcology and the surrounding area. Smaller parties ventured out to strike targets of opportunity and process new recruits.`);
+		} else {
+			App.UI.DOM.appendNewElement("span", node, ` locating and striking targets of opportunity, capturing both material loot and new slaves. Smaller parties secured the most important of the arcology's trade routes and processed new recruits.`);
+		}
 
-			if (V.SF.UC.Assign > 0) {
-				App.UI.DOM.appendNewElement("div", node, `A ${V.SF.UC.Assign < 2 ? 'small':'large'} portion of the force was assigned as ${V.SF.UC.Assign < 2 ? 'part':'full'} time undercover officers.`);
-			}
+		if (V.SF.UC.Assign > 0) {
+			App.UI.DOM.appendNewElement("div", node, `A ${V.SF.UC.Assign < 2 ? 'small':'large'} portion of the force was assigned as ${V.SF.UC.Assign < 2 ? 'part':'full'} time undercover officers.`);
+		}
 
-			App.UI.DOM.appendNewElement("span", node, " These activities have, overall");
-			App.UI.DOM.appendNewElement("span", node, " improved your arcology's prosperity.", "green");
-			App.UI.DOM.appendNewElement("span", node, ` The goods procured by ${V.SF.Lower} after accounting for the spoils retained by individual soldiers were`);
-
-			if (profit > 0) {
-				App.UI.DOM.appendNewElement("span", node, " more than sufficient to cover expenses.", "green");
-				App.UI.DOM.appendNewElement("span", node, " Excess material and human assets totaling");
-				App.UI.DOM.appendNewElement("span", node, ` ${cashFormat(profit)}`, "yellowgreen");
-				App.UI.DOM.appendNewElement("span", node, " (after liquidation) and paying expenses were transferred to your accounts.");
-				if (V.economy < 100) {
-					App.UI.DOM.appendNewElement("span", node, " The rapidly degrading global economy has one upside,");
-					App.UI.DOM.appendNewElement("span", node, ` more 'persuasive' techniques were able to be implemented thus leading to an increase in profit.`, "green");
-				}
-			} else {
-				App.UI.DOM.appendNewElement("span", node, " barely enough to cover expenses.", "red");
-				App.UI.DOM.appendNewElement("span", node, " More growth will be needed to ensure profitability;");
-				App.UI.DOM.appendNewElement("span", node, " purchasing more upgrades may help.", "yellow");
-				App.UI.DOM.appendNewElement("span", node, " Per estimates provided, an additional");
-				App.UI.DOM.appendNewElement("span", node, ` ${cashFormat(Math.abs(profit))}`, "yellowgreen");
-				App.UI.DOM.appendNewElement("span", node, " is required for sufficient cover.");
+		App.UI.DOM.appendNewElement("span", node, " These activities have, overall");
+		App.UI.DOM.appendNewElement("span", node, " improved your arcology's prosperity.", ["green"]);
+		App.UI.DOM.appendNewElement("span", node, ` The goods procured by ${V.SF.Lower} after accounting for the spoils retained by individual soldiers were`);
+
+		if (profit > 0) {
+			App.UI.DOM.appendNewElement("span", node, " more than sufficient to cover expenses.", ["green"]);
+			App.UI.DOM.appendNewElement("span", node, " Excess material and human assets totaling");
+			App.UI.DOM.appendNewElement("span", node, ` ${cashFormat(profit)}`, ["yellowgreen"]);
+			App.UI.DOM.appendNewElement("span", node, " (after liquidation) and paying expenses were transferred to your accounts.");
+			if (V.economy < 100) {
+				App.UI.DOM.appendNewElement("span", node, " The rapidly degrading global economy has one upside,");
+				App.UI.DOM.appendNewElement("span", node, ` more 'persuasive' techniques were able to be implemented thus leading to an increase in profit.`, ["green"]);
 			}
-			App.UI.DOM.appendNewElement("span", node, ` This represents a difference of ${num(Math.abs(((profit/V.SF.lastWeeksProfit)*100).toFixed(2)))}% since last week's profit of ${cashFormat(V.SF.lastWeeksProfit)}.`);
-			V.SF.lastWeeksProfit = profit;
-
-			App.UI.DOM.appendNewElement("span", node, ` ${FNG} new soldiers were recruited this week, and your reputation has`);
-			App.UI.DOM.appendNewElement("span", node, " increased through the improvement of trade security.", "green");
-
-			App.Events.addParagraph(node, ["As the leader of a military force, The Colonel has very limited free time during the week and is only able to issue orders or provide basic reports."]);
-			App.UI.DOM.appendNewElement("p", node, weeklyActions());
-			App.UI.DOM.appendNewElement("div", node, weeklyOptions());
-
-			if (V.SF.MercCon.CanAttend === 1) {
-				V.SF.MercCon.Income = 0;
-				V.SF.MercCon.Menials = 0;
-				const tradeShowAttendes = 200;
-				const menialGiftsPerAttendee = 5;
-				const menialGifts = Math.ceil(jsRandom(1, ((tradeShowAttendes * menialGiftsPerAttendee) / 10)));
-				const TSProfit = Math.ceil(500000 * (1 + (size / 1000)) * (1 + (V.arcologies[0].prosperity / 1000)) * App.Mods.SF.env());
-				const NewMercs = jsRandom(1, (tradeShowAttendes / 10));
-
-				V.SF.MercCon.Menials += menialGifts;
-				V.SF.MercCon.TotalMenials += menialGifts;
-				V.menials += menialGifts;
-				V.SF.MercCon.History++;
-				V.SF.MercCon.Income += TSProfit;
-				V.SF.MercCon.Revenue += TSProfit;
-				cashX(TSProfit, "specialForces");
-
-				if (V.secExpEnabled > 0 && V.mercenaries > 0) {
-					V.SF.MercCon.Mercs = 0;
-					V.SecExp.units.mercs.free += NewMercs;
-					V.SF.MercCon.TotalMercs += NewMercs;
-					V.SF.MercCon.Mercs += NewMercs;
-				}
-				App.UI.DOM.appendNewElement("span", node, "TradeShow: ", "bold");
-				App.UI.DOM.appendNewElement("span", node, `During a break, The Colonel managed to sell some generic schematics to the ${tradeShowAttendes} attendees, some of whom decided to also give a few menial slaves as a bonus.`);
+		} else {
+			App.UI.DOM.appendNewElement("span", node, " barely enough to cover expenses.", ["red"]);
+			App.UI.DOM.appendNewElement("span", node, " More growth will be needed to ensure profitability;");
+			App.UI.DOM.appendNewElement("span", node, " purchasing more upgrades may help.", ["yellow"]);
+			App.UI.DOM.appendNewElement("span", node, " Per estimates provided, an additional");
+			App.UI.DOM.appendNewElement("span", node, ` ${cashFormat(Math.abs(profit))}`, ["yellowgreen"]);
+			App.UI.DOM.appendNewElement("span", node, " is required for sufficient cover.");
+		}
+		App.UI.DOM.appendNewElement("span", node, ` This represents a difference of ${num(Math.abs(((profit / V.SF.lastWeeksProfit) * 100).toFixed(2)))}% since last week's profit of ${cashFormat(V.SF.lastWeeksProfit)}.`);
+		V.SF.lastWeeksProfit = profit;
+
+		App.UI.DOM.appendNewElement("span", node, ` ${FNG} new soldiers were recruited this week, and your reputation has`);
+		App.UI.DOM.appendNewElement("span", node, " increased through the improvement of trade security.", ["green"]);
+
+		App.Events.addParagraph(node, ["As the leader of a military force, The Colonel has very limited free time during the week and is only able to issue orders or provide basic reports."]);
+		App.UI.DOM.appendNewElement("p", node, weeklyActions());
+		App.UI.DOM.appendNewElement("div", node, weeklyOptions());
+
+		if (V.SF.MercCon.CanAttend === 1) {
+			V.SF.MercCon.Income = 0;
+			V.SF.MercCon.Menials = 0;
+			const tradeShowAttendes = 200;
+			const menialGiftsPerAttendee = 5;
+			const menialGifts = Math.ceil(jsRandom(1, ((tradeShowAttendes * menialGiftsPerAttendee) / 10)));
+			const TSProfit = Math.ceil(500000 * (1 + (size / 1000)) * (1 + (V.arcologies[0].prosperity / 1000)) * App.Mods.SF.env());
+			const NewMercs = jsRandom(1, (tradeShowAttendes / 10));
+
+			V.SF.MercCon.Menials += menialGifts;
+			V.SF.MercCon.TotalMenials += menialGifts;
+			V.menials += menialGifts;
+			V.SF.MercCon.History++;
+			V.SF.MercCon.Income += TSProfit;
+			V.SF.MercCon.Revenue += TSProfit;
+			cashX(TSProfit, "specialForces");
+
+			if (V.secExpEnabled > 0 && V.mercenaries > 0) {
+				V.SF.MercCon.Mercs = 0;
+				V.SecExp.units.mercs.free += NewMercs;
+				V.SF.MercCon.TotalMercs += NewMercs;
+				V.SF.MercCon.Mercs += NewMercs;
 			}
-
-			V.SF.MercCon.CanAttend = -1;
+			App.UI.DOM.appendNewElement("span", node, "TradeShow: ", ["bold"]);
+			App.UI.DOM.appendNewElement("span", node, `During a break, The Colonel managed to sell some generic schematics to the ${tradeShowAttendes} attendees, some of whom decided to also give a few menial slaves as a bonus.`);
 		}
-		return [node, upkeep];
-	}
 
+		V.SF.MercCon.CanAttend = -1;
+	}
+	return [node, upkeep, profit];
+	
 	function weeklyOptions() {
 		const choices = document.createElement("span");
 		App.UI.DOM.appendNewElement("div", choices, `The Colonel looks down a list on her tablet. "There's some things we can do to help you out, boss.`);
diff --git a/src/Mods/SpecialForce/FireBase.js b/src/Mods/SpecialForce/FireBase.js
index eef978116365adbb118deaca6f9e1d6a9de5063a..0cc6dcd35c16ab2b9a5efbff16d762505ed20fd1 100644
--- a/src/Mods/SpecialForce/FireBase.js
+++ b/src/Mods/SpecialForce/FireBase.js
@@ -6,7 +6,7 @@ App.UI.FireBase = function() {
 	let r = [];
 
 	if (V.SF.FS.Tension > 100) {
-		node.append(App.Mods.SF.fsIntegration.badOutcome());
+		return App.UI.DOM.appendNewElement("div", node, App.Mods.SF.fsIntegration.crisis()[0]);
 	} else {
 		if (V.cheatMode > 0 || V.debugMode > 0) {
 			App.UI.DOM.appendNewElement("div", node, App.UI.DOM.passageLink("Edit", "editSF"));
diff --git a/src/Mods/SpecialForce/SpecialForce.js b/src/Mods/SpecialForce/SpecialForce.js
index 9c3d49e0dd477b2a6190dd28d662d03ac66bc505..20486d8497e590ae1e36e731377b0288a7e5773c 100644
--- a/src/Mods/SpecialForce/SpecialForce.js
+++ b/src/Mods/SpecialForce/SpecialForce.js
@@ -80,6 +80,7 @@ App.Mods.SF.totalNetWorth = function() {
 		value += V.SF.CreditsInvested;
 		value += V.SF.MercCon.Revenue;
 		value -= App.Mods.SF.AAR()[1];
+		value += App.Mods.SF.AAR()[2];
 	}
 	return value;
 };
diff --git a/src/Mods/SpecialForce/SpecialForceBC.js b/src/Mods/SpecialForce/SpecialForceBC.js
index 1be71c8b159bd942d565856afe03420859c46ac3..6aaf1a57088ce70f6297bc1b49a7917219225be3 100644
--- a/src/Mods/SpecialForce/SpecialForceBC.js
+++ b/src/Mods/SpecialForce/SpecialForceBC.js
@@ -327,6 +327,27 @@ App.Mods.SF.BC = function() {
 	delete V.SF.Units; delete V.SpecOpsLock; delete V.SF.U; delete V.SF.WG;
 	delete V.SF.Subsidy; delete V.SF.SpecOps; delete V.SF.SpecOpsLock; delete V.SFUC;
 
+	if (V.SF.FS.BadOutcome && !V.SF.Colonel.Core) {
+		switch(V.SF.FS.BadOutcome) {
+			case 'MIGRATION':
+				V.SF.Colonel.Core = "kind";
+				break;
+			case 'Revolt':
+			case 'ANNIHILATION':
+				V.SF.Colonel.Core = "cruel";
+				break;
+			case 'OCCUPATION':
+				V.SF.Colonel.Core = "brazen";
+				break;
+			case 'ASSIMILATION':
+				V.SF.Colonel.Core = "jaded";
+				break;
+			case 'ISOLATION':
+				V.SF.Colonel.Core = "shell shocked";
+				break;
+		}
+	}
+	delete V.SF.FS.BadOutcome;
 	if (V.SF.BadOutcome !== undefined) {
 		delete V.SF.BadOutcome;
 	}
diff --git a/src/Mods/SpecialForce/SpecialForceFS.js b/src/Mods/SpecialForce/SpecialForceFS.js
index 787ce0999097c741bb7154e2e6dc28638fd409d8..60370fc2c0289d4a5f23b539b01fc6aac677dad1 100644
--- a/src/Mods/SpecialForce/SpecialForceFS.js
+++ b/src/Mods/SpecialForce/SpecialForceFS.js
@@ -3,8 +3,7 @@ App.Mods.SF.fsIntegration = (function() {
 		list,
 		menu,
 		flavourText,
-		badOutcome,
-		badOutcomeFirebase
+		crisis,
 	};
 
 	function list() {
@@ -152,7 +151,7 @@ App.Mods.SF.fsIntegration = (function() {
 				barracks = `The barracks are certainly not the first of their kind in the Free Cities, but they are among the first to provide an actual side room for Barracks-slaves to relax in when their shifts are done. The Slave Lounge is very well furnished, with soft furniture and a large wallscreen television to maximize comfort. Sometimes the occasional soldier will even drop by when they want to spend time with some 'civvies' for a change.`;
 				armoury = `On the largest wall in the armoury, there is a massive wallscreen. This wallscreen serves as an interactive digital plaque of commemoration. Upon it lie the listed names of every retired and deceased former member of the Firebase, and one only has to touch it to see a listee's profile, search for a specific name, or scroll up or down the immense list. If one were only to touch a name, they will see a profile pop-up containing the full life story of that soldier -- or at least as much of it as they wanted to share -- along with their full service records, with special emphasis placed on any heroic deeds in battle or valorous conduct in general. On tiny wallspeakers, triumphant music gently plays while onlookers scroll. On both flanks of the wallscreen, an honor guard stands vigil.`;
 				commandCenter = `The command center has been made extremely comfortable. The tables and chairs are adjustable, each battle station has its own heating and air conditioning unit for highly localized climate control, and there is are monthly rewards for commanders who manage to keep soldier, slave, and civilian casualties especially low. There is a long sofa near the entrance for obedient slaves assigned here to relax and chat on when not being called to serve. Next to the sofa there is also a big plush rug piled with soft pillows if a deserving commander or two wants to have a relaxing fuck with unoccupied slaves. The atmosphere is relaxed and cordial by military standards, even between the slaves and staff.`;
-				drugLab = `In the 'special projects chamber' of the drug laboratory, the balcony's sealed control room overlooks a hopeful sight: rows upon rows of rejuvenation tanks installed here house dozens of critically injured soldiers and slaves from all around the Firebase, and even a few dying citizens from the main arcology; here the drug laboratory tests, applies, and perfects its newest curative formulae and solutes on emergency patients that need them most.In the 'special projects chamber' of the drug laboratory, the balcony's sealed control room overlooks a hopeful sight: rows upon rows of rejuvenation tanks installed here house dozens of critically injured soldiers and slaves from all around the Firebase, and even a few dying citizens from the main arcology; here the drug laboratory tests, applies, and perfects its newest curative formulae and solutes on emergency patients that need them most.`;
+				drugLab = `In the 'special projects chamber' of the drug laboratory, the balcony's sealed control room overlooks a hopeful sight: rows upon rows of rejuvenation tanks installed here house dozens of critically injured soldiers and slaves from all around the Firebase, and even a few dying citizens from the main arcology; here the drug laboratory tests, applies, and perfects its newest curative formulae and solutes on emergency patients that need them most.`;
 				personalItems = `The proud slave owners in the Firebase can be seen donating portions of their free time to studying and applying the slave improvement materials in their possession; best-selling slave-training books, novelty slave clothing, and slave nutrition meal plans are all commonplace tools to slavemaster hobbyists in your martial employ. Especially notable are the slave-oriented gifts such as slave-written gift books or randomized gift boxes for deserving slaves who like surprises.`;
 				droneBay = `The many slave-capture drones have all been equipped with helpful light cyber-warfare suites meant to take over nearby enemy and civilian devices to display or broadcast simple messages; unprotected PDA's, computers, smartphones, radios, comm-beads, and so on are hijacked to communicate placative statements like "PLEASE SURRENDER", "DON'T SHOOT", or "WE'RE HERE TO HELP".`;
 				garage = `Safety, Survivability, and Dependability are very high priorities for the dedicated maintenance and refitting crews of the garage. There are safety notices pasted onto the walls of many duty stations within the garage, clearly encouraging mechanics and crewmen to exercise great caution and best practices in dealing with the vehicles in their care. Additional safety instructions and even some well-wishes painted on by the staff can be found inside the vehicles as well.`;
@@ -373,13 +372,13 @@ App.Mods.SF.fsIntegration = (function() {
 				break;
 			case 'Hedonistic_Decadence':
 				dec = `Hedonistic Decadence: societal acceptance of overindulgence and immediate gratification. Be it food, drink, sex, drugs or whatever one's desire may be.`;
-				gift = `With the help of her own personal Amphibious Resupply Landship, The Colonel can support ongoing operations within friendly lines while doing very little work herself, independent of whatever the rest of the Firebase is up to. This massive, high-capacity, quad tracked vehicle can seamlessly transition from land to sea and vice-versa, while supporting dozens of heavy ammo crates, several refueling hoses & fuel pumps, and a whole week's worth of rations and recreational refreshments for an entire infantry company. This vehicles long range and ease of use makes it a perfect vehicle for The Colonel to stay productive during her more lackadaisical moods.`;
+				gift = `With the help of her own personal Amphibious Resupply Landship, The Colonel can support ongoing operations within friendly lines while doing very little work herself, independent of whatever the rest of the Firebase is up to. This massive, high-capacity, quad-tracked vehicle can seamlessly transition from land to sea and vice-versa, while supporting dozens of heavy ammo crates, several refueling hoses & fuel pumps, and a whole week's worth of rations and recreational refreshments for an entire infantry company. This vehicle's long range and ease of use makes it a perfect vehicle for The Colonel to stay productive during her more lackadaisical moods.`;
 				foods = `Delightful platters of bewildering varieties of foods and baked treats are available on demand, as the cooks and slave-cooks toil day and night on rotation to keep it all coming. Each soldier gets a tray at every meal to fill and stack as he or she pleases, with a small free packet of recreational drugs given with every meal.`;
-				media = `Quotes, Stories, and Essays from across the ages written on the topics of desire, indulgence, pleasure, or the importance of these things to the human experience are all available in lots of little booklets available by the stack throughout the Firebase. Meanwhile, pornography featuring curvy, plush, or even obese women is easily accessible on the laminated tablets that have been distributed throughout the Firebase.`;
+				media = `Quotes, stories, and essays from across the ages written on the topics of desire, indulgence, pleasure, or the importance of these things to the human experience are all available in lots of little booklets available by the stack throughout the Firebase. Meanwhile, pornography featuring curvy, plush, or even obese women is easily accessible on the laminated tablets that have been distributed throughout the Firebase.`;
 				slaves = `Many of the slaves here are quite hardworking; they need to supply a constant amount of food, drink, drugs, games, media, clean holes, and other entertainments to the impatient soldiers around, who are in constant need of fast gratification. The slaves deal with all the stress and anxiety by indulging in some extra drinks and drugs themselves, and they have some extra soft padding on their bodies and assets to prove it.`;
 				cages = `Sex toys, and a generous supply of snack bars, porn magazines, and electric cigarettes are issued to every cage inmate upon internment. The captives are free to relieve their anxieties at any time, and are encouraged to do so.`;
 				commonArea = `The east end of the common area has the tables and chairs there packed much more tightly together than before, and for good reason; the entire wing is dominated by an Olympic-sized hot tub, flanked on both sides by beach chairs, food vendors, LAN party lounges, and even unisex changing rooms. This open air resort is a widely frequented attraction; with support staff, soldiers, and even some highly-favored slaves partaking of its attractions whenever they have the time. The air is heavy with drug fumes and the smell of food. You see a few empty alcohol bottles floating idly in the steamy water.`;
-				barracks = `Every bed unit has a tiny refrigerator unit attached at the head. At any given time, a cold drink, some cool leftovers, or a chilled shot of injections is just within arms reach for any soldier resting. Above soldiers' heads is a small touchscreen monitor attached to an adjustable arm, so that troops are never without options for entertainment either.`;
+				barracks = `Every bed unit has a tiny refrigerator unit attached at the head. At any given time, a cold drink, some cool leftovers, or a chilled shot of injections is just within arm's reach for any soldier resting. Above soldiers' heads is a small touchscreen monitor attached to an adjustable arm, so that troops are never without options for entertainment either.`;
 				armoury = `Cushioned couches, lounge chairs, and futons lie all around the armoury, and on every last one of them lies a debriefed soldier sleeping off their last deployment with the help of some opium. Most of them haven't even bothered to change out of their fatigues, and many have their weapons and body armor strewn carelessly on the floor beside them. Further still, a few have their pants pulled down to their ankles, whilst an intoxicated slave-whore lazily rides them. Heavy smoke fills the air, and adjacent to the central quartermaster's booth is a tidy fast food bar where shots of soft drinks, small plates of fried foods, and tiny condiments are always in quick supply for those that the time to spare.`;
 				commandCenter = `There are drug platters, snack bowls, and punch bowls for every battle station of the command center. During combat maneuvers the staff here are especially ravenous, chugging down large amounts of substance while they send messages that carry power over life and death. The pressure to succeed and secure victory is high, and in order to cope, the staff consume.`;
 				drugLab = `The distribution point of the drug laboratory is an eerie place, with a very thick white mist for soldiers to stroll through on their way to the drug selection buffet. The mist is so dense and rich that many soldiers report feeling either high or buzzed after just a few minutes inside of it.`;
@@ -387,11 +386,11 @@ App.Mods.SF.fsIntegration = (function() {
 				droneBay = `Your drone technicians are proud of how little upkeep the drones they work on require, how little time they need to spend on tune-ups whenever maintenance time does finally come around, and how easy said maintenance is. Your drones haven't been upgraded too often, as their sheer power output is high enough to be sufficient for operational requirements for a long time to come.`;
 				garage = `There are treats of all kinds all over the garage, to set the hardworking staff here at ease. Unclad sex slaves bounce up and down on the laps of debriefed crewmen while waitress slaves rush about carrying platters of hors d'oeuvres to mechanics that summon them, feeding the mechanics hand-to-mouth while they make their adjustments. There are drugs all over the garage too, half-snorted, half-injected, and half smoked. Substances pepper the garage as the workmen get their fixes in between the fixes they perform on the vehicles. It is not uncommon to find tweakers passed out underneath or next to the vehicles they were just tweaking because of this.`;
 				vehicle = `The staff of the garage work hard within a very comfortable environment, and according to them they need their many comforts, but your combat-active crewmen deserve some comforts as well. On the interior of every vehicle are very plush massage-chair seats, powerful air conditioning suites, and of course, delightful compact pill dispensers that help ensure that no deployment is ever a dull one.`;
-				hangar = `The personnel within the hangar work with great levity, with every person's working shift beginning with a tall glass of beer (barring a direct attack on the arcology). Your staff and pilots are aware that their combat role is not as physically strenuous as that of their mechanized and infantry comrades, and they fully intend on taking advantage of that fact to get more partying done. All around the hangar, right next to well-serviced aircraft, you can see idle personnel doing lines on the nearest available surface, dancing together in empty spaces, enjoying succulent desert foods and expensive drinks large trays, and so on. Your pilots are very relaxed too, with their drug-induced states being a useful asset in their high-risk flight missions that sometimes require them to make very brave maneuvers in order to more effectively engage enemy forces. As such, your ace pilots are some of the most high-tolerance users you've ever seen.`;
+				hangar = `The personnel within the hangar work with great levity, with every person's working shift beginning with a tall glass of beer (barring a direct attack on the arcology). Your staff and pilots are aware that their combat role is not as physically strenuous as that of their mechanized and infantry comrades, and they fully intend on taking advantage of that fact to get more partying done. All around the hangar, right next to well-serviced aircraft, you can see idle personnel doing lines on the nearest available surface, dancing together in empty spaces, enjoying succulent desert foods and expensive drinks on large trays, and so on. Your pilots are very relaxed too, with their drug-induced states being a useful asset in their high-risk flight missions that sometimes require them to make very brave maneuvers in order to more effectively engage enemy forces. As such, your ace pilots are some of the most high-tolerance users you've ever seen.`;
 				aircraft = `The personnel of the hangar are impressively pampered on their own, but they seem to have applied their dedication to delight to the vehicles in their care as well. Every airframe has been carefully enlarged to fit ever more luxuries and comforts into every aircraft. Internal heating and cooling systems are enhanced, every passenger compartment comes with its own wallscreen HDTV, and soft padded reclining seats line each passenger compartment, among other accommodations. No effort is spared in ensuring deployed troops and pilots are put at ease as soon as they mount up. After all, isn't continuous gratification a key aspect of Hedonism?`;
-				luxuries = `A stark narrow building occupies the space near the drug laboratory, where it can receive easy shipments anesthetics, filtrates, and detoxifying substances from the lab for the sake of any visitor in need of them. Within this spacious zone lie a long row of surgical chairs, where occupants can simply sit down and be placed into a deep rest by the numerous attendants, before being operated upon by the autosurgery suites above to receive advanced liposuction, carcinogenic filtration, and curative injection procedures that quickly and somewhat painlessly prolongs their lives and repairs the damage to their bodies incurred by their wild are carefree lifestyles within the Firebase. For those willing to pay the fees, this place provides the pleasure-obsessed population with powerful longevity solutions that they cannot replicate elsewhere within the Firebase, and eliminating the need to settle for intermittent diet & exercise or to waste their free time traveling to the crowded clinics in the arcology above. Your warriors and their support staff are all grateful for the opportunity to sustain their truly decadent lifestyles without guilt or consequence.`;
-				perimeter = `Luxury cruises have long been a popular interest in your Firebase subculture, and now, your personnel have a worthy environment to explore that interest. A small artificial lake has been built outside the Firebase entrance to host a small but well furnished premium yacht. The yacht lazily makes its daily revolutions around this lake, filled with rare and ever-changing entertainments that once cannot find inside the Firebase itself.`;
-				roleplaying = `Your soldiers are rather lackadaisical about themselves and their bodies; the Firebase is a carefree place. Fun and Relaxation are pursuits of choice, as the weekly orgies, eating competitions, and drug exhibitions require little effort to enjoy. The peer pressure to indulge and make the most of each day is inescapable, and every individual has been seen participating in most of the delights available at least once. Obviously, every person down here, bar some of the newer recruits, has a very jolly disposition. Some are drunk, high, or both. Others are passed out. Some are just laughing at the others. However, everyone is thoroughly entertained.`;
+				luxuries = `A stark narrow building occupies the space near the drug laboratory, where it can receive easy shipments of anesthetics, filtrates, and detoxifying substances from the lab for the sake of any visitor in need of them. Within this spacious zone lies a long row of surgical chairs, where occupants can simply sit down and be placed into a deep rest by the numerous attendants, before being operated upon by the autosurgery suites above to receive advanced liposuction, carcinogenic filtration, and curative injection procedures that quickly and somewhat painlessly prolong their lives and repair the damage to their bodies incurred by their wild and carefree lifestyles within the Firebase. For those willing to pay the fees, this place provides the pleasure-obsessed population with powerful longevity solutions that they cannot replicate elsewhere within the Firebase, and eliminating the need to settle for intermittent diet & exercise or to waste their free time traveling to the crowded clinics in the arcology above. Your warriors and their support staff are all grateful for the opportunity to sustain their truly decadent lifestyles without guilt or consequence.`;
+				perimeter = `Luxury cruises have long been a popular interest in your Firebase subculture, and now, your personnel have a worthy environment to explore that interest. A small artificial lake has been built outside the Firebase entrance to host a small but well furnished premium yacht. The yacht lazily makes its daily revolutions around this lake, filled with rare and ever-changing entertainments that one cannot find inside the Firebase itself.`;
+				roleplaying = `Your soldiers are rather lackadaisical about themselves and their bodies; the Firebase is a carefree place. Fun and relaxation are pursuits of choice, as the weekly orgies, eating competitions, and drug exhibitions require little effort to enjoy. The peer pressure to indulge and make the most of each day is inescapable, and every individual has been seen participating in most of the delights available at least once. Obviously, every person down here, bar some of the newer recruits, has a very jolly disposition. Some are drunk, high, or both. Others are passed out. Some are just laughing at the others. However, everyone is thoroughly entertained.`;
 				colonel = `Decadent Hedonism: The Colonel has a thin layer of fat covering her muscles and overall body, making her appealingly 'thicc' without making her slow or weak; she even jiggles in the precisely correct places when she walks. Every weekend she has entire trays of food and substances brought to her pavilion on rotation, and you have no idea where she manages to put it all. She's certainly indulging her desires a lot more. She visits her doctors more often and regularly joins the training platoons in their daily runs to keep her body healthy.`;
 				break;
 			case 'Chattel_Religionism':
@@ -761,101 +760,124 @@ App.Mods.SF.fsIntegration = (function() {
 		return node;
 	}
 
-	function badOutcome() {
-		V.arcologies[0].prosperity -= 50;
-		cashX(-V.cash * 0.25, "specialForces");
-		let r = ``;
-		let BadOutcome = '';
+	/**
+		* @returns {[text: DocumentFragment, type: String]}
+		*/
+	function crisis() {
+		const t = new DocumentFragment();
+		const firstExecution = V.SF.Active !== -2;
+		if (["Firebase", "Economics"].includes(passage())) {
+			V.arcologies[0].prosperity -= (firstExecution ? 10 : 5);
+		}
+		if (firstExecution) {
+			cashX(forceNeg(V.cash * 0.25), "specialForces");
+		}
 		V.rep = Math.clamp(V.rep, 0, 17500);
+
+		if (passage() === "Economics" && !firstExecution) {
+			App.UI.DOM.appendNewElement("div", t, `This week your arcology lost a bit of prosperity and large amount of reputation, due to the looming threat that The Colonel and her forces may resurface.`, ["red"]);
+		}
+		
+		let type;
 		switch (V.SF.Colonel.Core) {
 			case "kind":
-				BadOutcome += 'MIGRATION';
-				addTrinket("The Colonel's handkerchief");
-				r += `Your Colonel has had enough of your meddling. In her eyes, you've broken faith with her. She asked one thing of you in return for her full support, and you could not even give her that.`;
-				r += `<br>At midnight, a great mechanized convoy, the biggest you've seen in a long while, streams out of your Arcology. Troop Carriers, Aircraft, Heavy Trucks, and other war machines of varying sizes pour out of the Firebase in tight formation. The Colonel is refusing your calls, and you know it would be ill advised to go out there yourself or to try to stop them with force. The many bandits and mercenary groups that the convoy will inevitably pass by will probably feel this way as well. You have no idea where they are going or how they will end up, but with their wealth and weaponry, you are not worried.`;
-				r += `<br>Upon your inspection of the abandoned firebase itself, most of the heavier installations have been dismantled and carried away, but about ${cashFormat(55000)} in miscellaneous supplies and 73 menials have been left behind, presumably because the convoy had no space for them. On The Colonel's old pavilion, you see a white gift card standing upright.`;
-				r += `<br>When you climb the crates to take it and read it, you see The Colonel's handwritten sentiments about the way things turned out; her gratitude for taking her in when you did, her disappointment in your actions, a detailed account of your failings, her regrets that things had to end this way, and finally, her well wishes for your future endeavors.`;
-				r += `<br>Disgusted, you pocket the gift card and leave your employees and menials to gather up the valuables here before stalking back to your Penthouse. The former Firebase is returned to being a warehouse facility.`;
+				type = 'MIGRATION';
+				if (firstExecution) {
+					addTrinket("The Colonel's handkerchief");
+					App.UI.DOM.appendNewElement("div", t, `Your Colonel has had enough of your meddling. In her eyes, you've broken faith with her. She asked one thing of you in return for her full support, and you could not even give her that.`);
+					App.UI.DOM.appendNewElement("div", t, `At midnight, a great mechanized convoy, the biggest you've seen in a long while, streams out of your Arcology. Troop Carriers, Aircraft, Heavy Trucks, and other war machines of varying sizes pour out of the Firebase in tight formation. The Colonel is refusing your calls, and you know it would be ill advised to go out there yourself or to try to stop them with force. The many bandits and mercenary groups that the convoy will inevitably pass by will probably feel this way as well. You have no idea where they are going or how they will end up, but with their wealth and weaponry, you are not worried.`);
+					App.UI.DOM.appendNewElement("div", t, `Upon your inspection of the abandoned firebase itself, most of the heavier installations have been dismantled and carried away, but about ${cashFormat(55000)} in miscellaneous supplies and 73 menials have been left behind, presumably because the convoy had no space for them. On The Colonel's old pavilion, you see a white gift card standing upright.`);
+					App.UI.DOM.appendNewElement("div", t, `When you climb the crates to take it and read it, you see The Colonel's handwritten sentiments about the way things turned out; her gratitude for taking her in when you did, her disappointment in your actions, a detailed account of your failings, her regrets that things had to end this way, and finally, her well wishes for your future endeavors.`);
+					App.UI.DOM.appendNewElement("div", t, `Disgusted, you pocket the gift card and leave your employees and menials to gather up the valuables here before stalking back to your Penthouse. The former Firebase is returned to being a warehouse facility.`);
+				} else if (passage() === "Manage Penthouse") {
+					App.UI.DOM.appendNewElement("div", t, "Visiting the Firebase just takes you to an empty, eerie storeroom now.");
+				}
 				break;
 			case "cruel":
 				if (jsRandom(1, 100) > 50) {
-					BadOutcome += 'Revolt';
-					addTrinket("The Colonel's dog tags");
-					r += `<br>Finally fed up with your constant intrusions into her territory and crew, The Colonel riles up her people for an utterly ferocious rebellion. The promises of rape and plunder and dominion over some of the wealthiest tenants in the entire Free City (and their world-class slaves) are all that's needed to give the selfish lot of them a nearly unshakable resolve in the task of delivering their overlord Her most coveted prize: You.`;
-					r += `<br>It is now midnight. The lights are the first thing they disable, as they still have the excellent night vision equipment you purchased for them. Some of your citizens start panicking almost immediately at the sudden blackout; this is very reminiscent of the Daughters of Liberty attack that still haunts many of their memories. Things like this were never supposed to happen again. You had promised them that you'd create an army that would protect them...`;
-					r += `<br>Her army vanguard strikes fast and hard throughout the main Plaza, cutting through your security personnel, defensive platoons, and drones with an ease that stinks of months of careful planning and study. Your defensive platoons, veterans of many Battles, are outmaneuvered at every turn; their hidden ammunition caches are found empty, their communications networks are mysteriously scrambled, and key chokepoints are found to be booby-trapped before your men can even get to them; their well-rehearsed arcology defense routines have gone to ash. Assuming you ever get a chance to speak to The Colonel again, you would ask if her betrayal was actually inevitable rather than something you triggered.`;
-					r += `<br>You watch with immense disappointment as the very APC's and IFV's that you paid for now charge into resisting storefronts to storm the armed civilians inside with heavy infantry at point blank range. Battle Tanks trample wounded civilians in the streets as they maneuver to blast your citizens' hastily-made holdouts to pieces, burying dozens of civilian loyalists under mountains of rubble while hundreds more are gunned down in the streets for want of adequate cover. The Plaza is lost; the enemy vanguard has gained access to the Residential Sectors upstairs. Enticed, entire platoons of her vanguard decide to become bandits, ignoring their Colonel's orders and scattering off from the main force to kick down many apartment doors and help themselves to whatever desirable goods or inhabitants they find within.`;
-					r += `<br>Outside, her many aircraft swarm the local airspace to patrol the Arcology outskirts, conduct recon scans of the upper levels, or monitor your sealed penthouse outside the range of your SAM turrets, while shooting down any other fleeing VTOL's. You will not be escaping by air today. No one will. No escaping by land either: Swarms of her drones are tasing fleeing noncombatants by the hundreds for later enslavement, as the remainder of her army begins to pour into the bloody Plaza. This is your Arcology's darkest hour.`;
-					r += `<br>And yet your Mercenaries stand ready. On security feeds throughout the Residential Sectors and Garrison you see your elite sellswords charging out of their lodgings in full kit. They are few, but this is their home, and you are their Patron and Commander. They hold firm, fighting like legends of old in some places, and fighting like animals in others. The Mercenaries trapped downstairs near The Garrison take to the Markets, pinning down most of The Colonel's reinforcements from various shopping outlets using towed quad anti-aircraft guns, and ultimately cutting off many of the assets needed for The Colonel's ongoing assault upstairs. Enemy troop carriers laden with heavy infantry breach the shopping centers in order to dislodge them, only to have their inhabitants cooked alive before they can disembark in time or shot to pieces even when they do. Keeping these Mercenaries alive are the roving exosuit-clad tank hunter duos that frag entire armor platoons en route to these shopping outlets, resorting to carving open enemy AFV's up close with their powered CQB weapons once they've run out of missiles. Back in the Residencies upstairs, in the still-evacuating streets and atriums, your actively-camouflaged snipers take up choice positions on various balconies and overpasses, sowing panic among the advancing traitors with their impressive anti-material rifles with one explosive headshot after another, sometimes even hitting them through walls and buildings. In large indoor parks leading up to the main Residential courtyard, Mercenary fireteams force enemy flankers to flee every single footpath they walk through, harassing constantly and preventing any hostile reconnaissance or infiltration from being done.`;
-					r += `<br>The main Residential courtyard features the Residential Sectors' massive elevator complex, which will give The Colonel's forces rapid access to the Promenade, and ultimately, You. In front of it, your Mercenary Captain stands atop one of the many meters-thick sandbag walls his men just assembled there, leading the raging defensive blockade in bringing the vanguard's assault to a gory halt. ${V.SF.Lower}'s bodies and bits and debris pile up in small walls on the outskirts under the burning heat of hundreds of flying autocannon rounds and dozens of screeching missiles. Before the vanguard's morale can break however, The Colonel shows up in person behind her own lines, kitted in a customized power armor and dragging, of all things, a hydraulic trebuchet loaded with a crudely-welded large metal box. She launches the box from beyond your Mercenaries' line of sight, sending it reeling towards them and predicting that they will try to shoot it out of the sky. They do, not wanting the slow but strange projectile to hit them directly, only learning of their folly when the metal 'box' detonates midair and releases a dense cloud of cluster bombs over their position. The munitions themselves disable some of the exosuits, but they don't kill too many on their own. However, the bomblets do succeed in detonating the various ammo dumps that were feeding your Mercenaries' blazing guns. The chain explosions, resulting fires, destroyed cover, and widespread casualties and confusion all create the perfect opportunity for The Colonel to storm the previously implacable barricade at the head of her troops, with her followers rushing the merc lines and blasting off the heavy armor plating of your disoriented Mercenaries themselves before stabbing them to death, or in some cases, hauling off the dis-armored and defeated female Mercenaries they discover for immediate use. As the few intact Mercenaries remaining desperately struggle to hold off the advancing horde with their remaining ammo, The Colonel takes on your dazed Mercenary Captain in single combat. When their ammunition runs dry, and their blasted battlesuits break down, they both eject, and then the knives come out. Minutes later, she stabs him in the side of his skull after she dodges yet another attempt to land a killing blow on her. With the source of Mercenary command and control gone, The Colonel staunches her own bleeding, yanks a trooper out of a near-pristine battlesuit that she now claims for herself, and directly organizes the isolation and extermination of the smaller teams of Mercenaries that are bleeding her troops everywhere else. She routs your Mercenaries for good with the razing of their Garrison structure. The ${V.SF.Lower} now enjoys absolute air and ground superiority. Soon the surviving rear of her army is brought upstairs from the killing floors down in the Markets, and the many elevators and cargo lifts of the elevator complex are boarded, with your executive override codes to remotely shut down the elevators somehow being manually bypassed by her combat engineers. It won't be long now.`;
-					r += `<br>Dawn has broken over the Free City. Only five hours into the slaughter (of which your Mercenaries no doubt bought you at least three), it becomes very clear to you that the only way to save your arcology is to destroy it. Everything and Everyone will burn before you let this crazy bitch and her rabid dogs get their dirty hands on you or your slaves. On your order, your most loyal subordinates, the ones who were with you since the early days to patrol your arcology before you even had drones to protect it, fight their way to through the carnage of your panicking civilians on The Promenade to get to the exact hidden elevators that your Personal Assistant specifies for them. Their destination is the arcology's reactor complex, of course. Following the PA's instructions precisely, they arm their many high-yield explosive charges on your now-exposed and de-stabilized reactor, and in one final service to you, detonate them, creating a colossal explosion. The rapidly ascending heretics quite literally have the rug pulled from under them, as the blast takes out nearly all of the arcology's lesser foundational support beams, thus collapsing many thousands of metric tons of concrete, steel, plastic, and plaster out from underneath the upward bound Colonel and her men... And everyone else, unfortunately. With no foundation any longer, all of your arcology's interior Sectors are utterly gutted from the bottom-up by gravity itself, and everything beneath your ration-stocked, backup-powered Penthouse crumbles to the earth. The massive cloud of dust created by the widespread fires and interior collapse ends up covering the entire Free City for hours. Her aircraft, now bereft of their logistical support and command structure, immediately fly off to neighboring arcologies to offer their services to the various employers there, seeing as the coup has failed and they have nowhere else to go. The skies are free for You to travel as you please, but You aren't going anywhere.`;
-					r += `<br>It is late evening when the tremors finally stop. Everything below your Penthouse is ruin, and your arcology, its population, and your reputation are now essentially dust. However, the arcology did not fall. It. Is. Still. Yours. You shall rise again, not flee this tragedy in shame. Of course, no one will ever know that you sacrificed the arcology deliberately in order to save yourself; it is all too easy to claim that The Colonel carelessly damaged the reactor complex during her assault, ironically causing her own defeat. Frankly, sacrificing most of your tenants doesn't bother you as much as it probably should; maybe its because you know that if The Colonel and her men had won, all those people were as good as dead anyway.`;
-					r += `<br>You know that if you want to survive, you'll need to surround yourself with workers and allies to rebuild fast, else your rivals gobble you up. It costs you a horrific sum to clear and process the wreckage and rebuild the basic Sector superstructures and infrastructure for your arcology on such short notice, even after liquidating everything your workers salvage. Your powerful friends still residing in the old world or other Free Cities have lent you a surprising amount of aid too, with quite a few lent super-heavy construction assets getting huge amounts of work done quickly. Even then, what you've been able to rebuild is very little. After a nearly sleepless, sexless week of immense toil, you've successfully organized tens of thousands of people in restoring the arcology to a barely functional condition (along with rudimentary imitations of all your upgrades), and you've even got some new Garrison Mercenaries in by week's end too... But its just not the same. If it weren't for your bruised weather-plating your arcology would look like a giant skeleton. Inside, it feels like a concrete boneyard; everything has been built cheap and utilitarian, and the walls aren't even painted. With only a few operational services staffed by commuters from neighboring arcologies, there is just an eerie silence just about everywhere. With few amenities for relief, there are going to be many long days ahead for your few tenants, most of them being wealthy but distraught returning travelers who left before the attack. Maybe your slaves can help entertain them. A lot of these people are VIP's it seems.`;
-					r += `<br>It is now midnight. In a rare moment of reflection, you contemplate that what The Colonel just did to your arcology was exactly what you were all too happy to have her do to dozens, if not hundreds of innocent villages and townships under your shadow during her 'Raiding and Slaving' operations. Nevertheless, You have hard work ahead of you, especially now that your enemies see that you are now much weaker than you have ever been.`;
-					r += `<br>The Colonel's body was never found.`;
+					type = 'Revolt';
+					if (firstExecution) {
+						addTrinket("The Colonel's dog tags");
+						App.UI.DOM.appendNewElement("div", t, `Finally fed up with your constant intrusions into her territory and crew, The Colonel riles up her people for an utterly ferocious rebellion. The promises of rape and plunder and dominion over some of the wealthiest tenants in the entire Free City (and their world-class slaves) are all that's needed to give the selfish lot of them a nearly unshakable resolve in the task of delivering their overlord Her most coveted prize: You.`);
+						App.UI.DOM.appendNewElement("div", t, `It is now midnight. The lights are the first thing they disable, as they still have the excellent night vision equipment you purchased for them. Some of your citizens start panicking almost immediately at the sudden blackout; this is very reminiscent of the Daughters of Liberty attack that still haunts many of their memories. Things like this were never supposed to happen again. You had promised them that you'd create an army that would protect them...`);
+						App.UI.DOM.appendNewElement("div", t, `Her army vanguard strikes fast and hard throughout the main Plaza, cutting through your security personnel, defensive platoons, and drones with an ease that stinks of months of careful planning and study. Your defensive platoons, veterans of many Battles, are outmaneuvered at every turn; their hidden ammunition caches are found empty, their communications networks are mysteriously scrambled, and key chokepoints are found to be booby-trapped before your men can even get to them; their well-rehearsed arcology defense routines have gone to ash. Assuming you ever get a chance to speak to The Colonel again, you would ask if her betrayal was actually inevitable rather than something you triggered.`);
+						App.UI.DOM.appendNewElement("div", t, `You watch with immense disappointment as the very APC's and IFV's that you paid for now charge into resisting storefronts to storm the armed civilians inside with heavy infantry at point blank range. Battle Tanks trample wounded civilians in the streets as they maneuver to blast your citizens' hastily-made holdouts to pieces, burying dozens of civilian loyalists under mountains of rubble while hundreds more are gunned down in the streets for want of adequate cover. The Plaza is lost; the enemy vanguard has gained access to the Residential Sectors upstairs. Enticed, entire platoons of her vanguard decide to become bandits, ignoring their Colonel's orders and scattering off from the main force to kick down many apartment doors and help themselves to whatever desirable goods or inhabitants they find within.`);
+						App.UI.DOM.appendNewElement("div", t, `Outside, her many aircraft swarm the local airspace to patrol the Arcology outskirts, conduct recon scans of the upper levels, or monitor your sealed penthouse outside the range of your SAM turrets, while shooting down any other fleeing VTOL's. You will not be escaping by air today. No one will. No escaping by land either: Swarms of her drones are tasing fleeing noncombatants by the hundreds for later enslavement, as the remainder of her army begins to pour into the bloody Plaza. This is your Arcology's darkest hour.`);
+						App.UI.DOM.appendNewElement("div", t, `And yet your Mercenaries stand ready. On security feeds throughout the Residential Sectors and Garrison you see your elite sellswords charging out of their lodgings in full kit. They are few, but this is their home, and you are their Patron and Commander. They hold firm, fighting like legends of old in some places, and fighting like animals in others. The Mercenaries trapped downstairs near The Garrison take to the Markets, pinning down most of The Colonel's reinforcements from various shopping outlets using towed quad anti-aircraft guns, and ultimately cutting off many of the assets needed for The Colonel's ongoing assault upstairs. Enemy troop carriers laden with heavy infantry breach the shopping centers in order to dislodge them, only to have their inhabitants cooked alive before they can disembark in time or shot to pieces even when they do. Keeping these Mercenaries alive are the roving exosuit-clad tank hunter duos that frag entire armor platoons en route to these shopping outlets, resorting to carving open enemy AFV's up close with their powered CQB weapons once they've run out of missiles. Back in the Residencies upstairs, in the still-evacuating streets and atriums, your actively-camouflaged snipers take up choice positions on various balconies and overpasses, sowing panic among the advancing traitors with their impressive anti-material rifles with one explosive headshot after another, sometimes even hitting them through walls and buildings. In large indoor parks leading up to the main Residential courtyard, Mercenary fireteams force enemy flankers to flee every single footpath they walk through, harassing constantly and prtypeing any hostile reconnaissance or infiltration from being done.`);
+						App.UI.DOM.appendNewElement("div", t, `The main Residential courtyard features the Residential Sectors' massive elevator complex, which will give The Colonel's forces rapid access to the Promenade, and ultimately, You.`);
+						App.UI.DOM.appendNewElement("div", t, `In front of it, your Mercenary Captain stands atop one of the many meters-thick sandbag walls his men just assembled there, leading the raging defensive blockade in bringing the vanguard's assault to a gory halt. ${V.SF.Lower}'s bodies and bits and debris pile up in small walls on the outskirts under the burning heat of hundreds of flying autocannon rounds and dozens of screeching missiles. Before the vanguard's morale can break however, The Colonel shows up in person behind her own lines, kitted in a customized power armor and dragging, of all things, a hydraulic trebuchet loaded with a crudely-welded large metal box. She launches the box from beyond your Mercenaries' line of sight, sending it reeling towards them and predicting that they will try to shoot it out of the sky. They do, not wanting the slow but strange projectile to hit them directly, only learning of their folly when the metal 'box' detonates midair and releases a dense cloud of cluster bombs over their position. The munitions themselves disable some of the exosuits, but they don't kill too many on their own. However, the bomblets do succeed in detonating the various ammo dumps that were feeding your Mercenaries' blazing guns. The chain explosions, resulting fires, destroyed cover, and widespread casualties and confusion all create the perfect opportunity for The Colonel to storm the previously implacable barricade at the head of her troops, with her followers rushing the merc lines and blasting off the heavy armor plating of your disoriented Mercenaries themselves before stabbing them to death, or in some cases, hauling off the dis-armored and defeated female Mercenaries they discover for immediate use.`);
+						App.UI.DOM.appendNewElement("div", t, `As the few intact Mercenaries remaining desperately struggle to hold off the advancing horde with their remaining ammo, The Colonel takes on your dazed Mercenary Captain in single combat. When their ammunition runs dry, and their blasted battlesuits break down, they both eject, and then the knives come out. Minutes later, she stabs him in the side of his skull after she dodges yet another attempt to land a killing blow on her. With the source of Mercenary command and control gone, The Colonel staunches her own bleeding, yanks a trooper out of a near-pristine battlesuit that she now claims for herself, and directly organizes the isolation and extermination of the smaller teams of Mercenaries that are bleeding her troops everywhere else. She routs your Mercenaries for good with the razing of their Garrison structure. The ${V.SF.Lower} now enjoys absolute air and ground superiority. Soon the surviving rear of her army is brought upstairs from the killing floors down in the Markets, and the many elevators and cargo lifts of the elevator complex are boarded, with your executive override codes to remotely shut down the elevators somehow being manually bypassed by her combat engineers. It won't be long now.`);
+						App.UI.DOM.appendNewElement("div", t, `Dawn has broken over the Free City. Only five hours into the slaughter (of which your Mercenaries no doubt bought you at least three), it becomes very clear to you that the only way to save your arcology is to destroy it. Everything and Everyone will burn before you let this crazy bitch and her rabid dogs get their dirty hands on you or your slaves. On your order, your most loyal subordinates, the ones who were with you since the early days to patrol your arcology before you even had drones to protect it, fight their way to through the carnage of your panicking civilians on The Promenade to get to the exact hidden elevators that your Personal Assistant specifies for them. Their destination is the arcology's reactor complex, of course. Following the PA's instructions precisely, they arm their many high-yield explosive charges on your now-exposed and de-stabilized reactor, and in one final service to you, detonate them, creating a colossal explosion. The rapidly ascending heretics quite literally have the rug pulled from under them, as the blast takes out nearly all of the arcology's lesser foundational support beams, thus collapsing many thousands of metric tons of concrete, steel, plastic, and plaster out from underneath the upward bound Colonel and her men... And everyone else, unfortunately. With no foundation any longer, all of your arcology's interior Sectors are utterly gutted from the bottom-up by gravity itself, and everything beneath your ration-stocked, backup-powered Penthouse crumbles to the earth. The massive cloud of dust created by the widespread fires and interior collapse ends up covering the entire Free City for hours. Her aircraft, now bereft of their logistical support and command structure, immediately fly off to neighboring arcologies to offer their services to the various employers there, seeing as the coup has failed and they have nowhere else to go. The skies are free for You to travel as you please, but You aren't going anywhere.`);
+						App.UI.DOM.appendNewElement("div", t, `It is late evening when the tremors finally stop. Everything below your Penthouse is ruin, and your arcology, its population, and your reputation are now essentially dust. However, the arcology did not fall. It. Is. Still. Yours. You shall rise again, not flee this tragedy in shame. Of course, no one will ever know that you sacrificed the arcology deliberately in order to save yourself; it is all too easy to claim that The Colonel carelessly damaged the reactor complex during her assault, ironically causing her own defeat. Frankly, sacrificing most of your tenants doesn't bother you as much as it probably should; maybe its because you know that if The Colonel and her men had won, all those people were as good as dead anyway.`);
+						App.UI.DOM.appendNewElement("div", t, `You know that if you want to survive, you'll need to surround yourself with workers and allies to rebuild fast, else your rivals gobble you up. It costs you a horrific sum to clear and process the wreckage and rebuild the basic Sector superstructures and infrastructure for your arcology on such short notice, even after liquidating everything your workers salvage. Your powerful friends still residing in the old world or other Free Cities have lent you a surprising amount of aid too, with quite a few lent super-heavy construction assets getting huge amounts of work done quickly. Even then, what you've been able to rebuild is very little. After a nearly sleepless, sexless week of immense toil, you've successfully organized tens of thousands of people in restoring the arcology to a barely functional condition (along with rudimentary imitations of all your upgrades), and you've even got some new Garrison Mercenaries in by week's end too... But its just not the same. If it weren't for your bruised weather-plating your arcology would look like a giant skeleton. Inside, it feels like a concrete boneyard; everything has been built cheap and utilitarian, and the walls aren't even painted. With only a few operational services staffed by commuters from neighboring arcologies, there is just an eerie silence just about everywhere. With few amenities for relief, there are going to be many long days ahead for your few tenants, most of them being wealthy but distraught returning travelers who left before the attack. Maybe your slaves can help entertain them. A lot of these people are VIP's it seems.`);
+						App.UI.DOM.appendNewElement("div", t, `It is now midnight. In a rare moment of reflection, you contemplate that what The Colonel just did to your arcology was exactly what you were all too happy to have her do to dozens, if not hundreds of innocent villages and townships under your shadow during her 'Raiding and Slaving' operations. Nevertheless, You have hard work ahead of you, especially now that your enemies see that you are now much weaker than you have ever been.`);
+						App.UI.DOM.appendNewElement("div", t, `The Colonel's body was never found.`);
+					} else if (passage() === "Manage Penthouse") {
+						App.UI.DOM.appendNewElement("div", t, "Visiting the Firebase just takes you to an empty, eerie storeroom now.");
+					}
 				} else {
-					BadOutcome += 'ANNIHILATION';
-					addTrinket("The Colonel's combat knife");
-					r += `Finally fed up with your constant intrusions into her territory and crew, The Colonel riles up her people for a full takeover against your arcology. The promises of plunder and dominion over some of the wealthiest tenants in the entire Free City (and their world-class slaves), including you, are all that's needed to get things started. However, not every soldier is eager to betray you.`;
-					r += `<br>It is now Midnight. The lights are the first thing The Colonel's forces disable, as they still have the excellent night vision equipment you purchased for them. Some of your citizens start panicking almost immediately at the sudden blackout; this is very reminiscent of the Daughters of Liberty attack that still haunts many of their memories. Her horde of marauders purges the plaza and lower floors of the arcology mercilessly, thoughtlessly cutting through your tenants with an ease that stinks of true jealously and hatred. Most disturbingly, your penthouse's communications networks are all but destroyed, and your PA has been unreachable, seemingly hacked by some obscure technology you figure only The Colonel's contacts and few others could provide. As bad as all of this is, it is merely meant to distract and disrupt your mercenaries. The real threat is aerial.`;
-					r += `<br>Outside the arcology, her many aircraft swarm the local airspace to patrol the arcology outskirts, conduct recon scans of the upper levels, or monitor your now-secured penthouse, while shooting down any other fleeing VTOL's. You will not be escaping by air. No one will. No escaping by land either: Swarms of her drones are tasing fleeing noncombatants by the hundreds for resale, as the remainder of her army seizes control of vital arcology infrastructure. As you take note of this while donning your bathrobe, several missiles from attack VTOL's come crashing through your penthouse before detonating. Miraculously, no one is harmed by this, and it has even created a gap in a nearby wall for you to escape the penthouse through, but this is but a small comfort in the wake of the squads of disembarking troops, lead by The Colonel herself, rappelling into your penthouse to capture you directly.`;
-					r += `<br>You run. You run faster than you ever have in your life, past burning shops, burning vehicles, burning crowds, and burning bodies. An entire team of The Colonel's men are chasing you, lead by The Colonel herself, with their heavy kit probably the only reason they haven't caught you yet. They obviously want you alive, and you have been sharp enough to realize that this is very bad news for you. During your sprint, you also happen to run past several security cameras that impassively capture high-definition full-color footage of your retreat. When you eventually bump into one of your mercenaries and are escorted to a shelter, the personnel responsible for overseeing the camera feeds upload the footage of your great chase to the internet, where the entire world can see you being hounded by the men and women you personally hired to protect you and your arcology.`;
-					r += `<br>Eventually, The Colonel's coup collapses. The selfish and malevolent troops following her, easily distracted by the myriad opportunities for rich plunder all around them, end up scattering throughout the arcology and losing cohesion, allowing for your much better organized security forces, mercenary hunter-killer teams, and even local enraged citizens to regroup and eventually overwhelm each enemy looter gang individually until a grinding total victory is achieved by the end of the week. The Colonel never finds, captures, or kills you. Nor is she ever found, captured, or killed herself. But she did set you on the run, and humiliatingly enough, the entire Free City now knows about it. Everyone has seen the clip. When you think about it she did manage to kill you after all, in a manner of speaking.`;
-					r += `<br>Your arcology is once more yours, but your people will never forget the horrifying week they spent being slaughtered and hunted by The Colonel's marauders, butchered by the army that you convinced them to allow, or the fact that you couldn't save them because you were very busy being hunted yourself.`;
+					type = 'ANNIHILATION';
+					if (firstExecution) {
+						addTrinket("The Colonel's combat knife");
+						App.UI.DOM.appendNewElement("div", t, `Finally fed up with your constant intrusions into her territory and crew, The Colonel riles up her people for a full takeover against your arcology. The promises of plunder and dominion over some of the wealthiest tenants in the entire Free City (and their world-class slaves), including you, are all that's needed to get things started. However, not every soldier is eager to betray you.`);
+						App.UI.DOM.appendNewElement("div", t, `It is now Midnight. The lights are the first thing The Colonel's forces disable, as they still have the excellent night vision equipment you purchased for them. Some of your citizens start panicking almost immediately at the sudden blackout; this is very reminiscent of the Daughters of Liberty attack that still haunts many of their memories. Her horde of marauders purges the plaza and lower floors of the arcology mercilessly, thoughtlessly cutting through your tenants with an ease that stinks of true jealously and hatred. Most disturbingly, your penthouse's communications networks are all but destroyed, and your PA has been unreachable, seemingly hacked by some obscure technology you figure only The Colonel's contacts and few others could provide. As bad as all of this is, it is merely meant to distract and disrupt your mercenaries. The real threat is aerial.`);
+						App.UI.DOM.appendNewElement("div", t, `Outside the arcology, her many aircraft swarm the local airspace to patrol the arcology outskirts, conduct recon scans of the upper levels, or monitor your now-secured penthouse, while shooting down any other fleeing VTOL's. You will not be escaping by air. No one will. No escaping by land either: Swarms of her drones are tasing fleeing noncombatants by the hundreds for resale, as the remainder of her army seizes control of vital arcology infrastructure. As you take note of this while donning your bathrobe, several missiles from attack VTOL's come crashing through your penthouse before detonating. Miraculously, no one is harmed by this, and it has even created a gap in a nearby wall for you to escape the penthouse through, but this is but a small comfort in the wake of the squads of disembarking troops, lead by The Colonel herself, rappelling into your penthouse to capture you directly.`);
+						App.UI.DOM.appendNewElement("div", t, `You run. You run faster than you ever have in your life, past burning shops, burning vehicles, burning crowds, and burning bodies. An entire team of The Colonel's men are chasing you, lead by The Colonel herself, with their heavy kit probably the only reason they haven't caught you yet. They obviously want you alive, and you have been sharp enough to realize that this is very bad news for you. During your sprint, you also happen to run past several security cameras that impassively capture high-definition full-color footage of your retreat. When you typeually bump into one of your mercenaries and are escorted to a shelter, the personnel responsible for overseeing the camera feeds upload the footage of your great chase to the internet, where the entire world can see you being hounded by the men and women you personally hired to protect you and your arcology.`);
+						App.UI.DOM.appendNewElement("div", t, `typeually, The Colonel's coup collapses. The selfish and malevolent troops following her, easily distracted by the myriad opportunities for rich plunder all around them, end up scattering throughout the arcology and losing cohesion, allowing for your much better organized security forces, mercenary hunter-killer teams, and even local enraged citizens to regroup and typeually overwhelm each enemy looter gang individually until a grinding total victory is achieved by the end of the week. The Colonel never finds, captures, or kills you. Nor is she ever found, captured, or killed herself. But she did set you on the run, and humiliatingly enough, the entire Free City now knows about it. Everyone has seen the clip. When you think about it she did manage to kill you after all, in a manner of speaking.`);
+						App.UI.DOM.appendNewElement("div", t, `Your arcology is once more yours, but your people will never forget the horrifying week they spent being slaughtered and hunted by The Colonel's marauders, butchered by the army that you convinced them to allow, or the fact that you couldn't save them because you were very busy being hunted yourself.`);
+					} else if (passage() === "Manage Penthouse") {
+						App.UI.DOM.appendNewElement("div", t, "Visiting the Firebase just takes you to a charnel house of dead bodies, spent ammo casings, collapsed sub-structure, unstable rubble, and live munitions & duds that can detonate at the slightest disturbance. This chamber has proven so troublesome, tedious, and dangerous to clear out that you've decided to halt all salvage operations for the foreseeable future.");
+					}
 				}
 				break;
 			case "brazen":
-				BadOutcome += 'OCCUPATION';
-				addTrinket("The Colonel's sidearm");
-				r += `Finally fed up with your constant intrusions into her territory and crew, The Colonel riles up her people for a full takeover against your arcology. The promises of plunder and dominion over some of the wealthiest tenants in the entire Free City (and their world-class slaves), including you, are all that's needed to get things started.`;
-				r += `<br>At midnight, the lights are the first thing The Colonel's forces disable, as they still have the excellent night vision equipment you purchased for them. Some of your citizens panic almost immediately at the sudden blackout; this is very reminiscent of the Daughters of Liberty attack that still haunts many of their memories. Her army vanguard strikes fast and hard throughout, cutting through your security units and drones with an ease that stinks of months of careful planning and study. Most disturbingly, your penthouse's communications networks are all but destroyed, and your PA has been unreachable, seemingly hacked by some obscure technology you figure only The Colonel's contacts and few others could provide.`;
-				r += `<br>Outside, her many aircraft swarm the local airspace to patrol the arcology outskirts, conduct recon scans of the upper levels, or monitor your now-secured penthouse, while shooting down any other fleeing VTOL's. You will not be escaping by air. No one will. No escaping by land either: Swarms of her drones are tasing fleeing noncombatants by the hundreds for detainment, as the remainder of her army seizes control of vital arcology infrastructure. After just a few days, the entire arcology falls under her direct control, all dissidents, criminals, and rebels hopelessly outgunned by her lavishly equipped and experienced warriors.`;
-				r += `<br>You are trapped inside your Penthouse by the detachment of infantry guarding its exits in order to keep you in, probably with the goal of starving you out until you surrender yourself. With your communications down as well, your penthouse might as well be an island. You only salvation comes in the form of your neighboring arcologies and their respective mercenary contingents. They are intervening on your behalf out of paranoia; Free Cities are extremely wary of military power buildups near their borders, and they absolutely will not tolerate a full scale military coup within its borders. Fighting men and women from all over the City are seen battling in the streets of your arcology in a brutal blitzkrieg that your own tenants and mercenaries quickly join in on, pushing The Colonel's forces back gradually with sheer numbers. Eventually they are forced back into the Firebase proper, where they are sealed inside by using explosives to collapse part of the arcology atop them, rendering the Firebase itself totally defunct. Only a few small groups manage to scatter and flee this holding action, and your intelligence networks suspects that The Colonel herself was among one of them.`;
-				r += `With the help of some unlikely intervention, you've won this little war. Your arcology is once more yours, but your people will never forget the traumatic week they spent under the heel of the army that you convinced them to allow, or the fact that it took an entire coalition of outsiders to save them.`;
+				type = 'OCCUPATION';
+				if (firstExecution) {
+					addTrinket("The Colonel's sidearm");
+					App.UI.DOM.appendNewElement("div", t, `Finally fed up with your constant intrusions into her territory and crew, The Colonel riles up her people for a full takeover against your arcology. The promises of plunder and dominion over some of the wealthiest tenants in the entire Free City (and their world-class slaves), including you, are all that's needed to get things started.`);
+					App.UI.DOM.appendNewElement("div", t, `At midnight, the lights are the first thing The Colonel's forces disable, as they still have the excellent night vision equipment you purchased for them. Some of your citizens panic almost immediately at the sudden blackout; this is very reminiscent of the Daughters of Liberty attack that still haunts many of their memories. Her army vanguard strikes fast and hard throughout, cutting through your security units and drones with an ease that stinks of months of careful planning and study. Most disturbingly, your penthouse's communications networks are all but destroyed, and your PA has been unreachable, seemingly hacked by some obscure technology you figure only The Colonel's contacts and few others could provide.`);
+					App.UI.DOM.appendNewElement("div", t, `Outside, her many aircraft swarm the local airspace to patrol the arcology outskirts, conduct recon scans of the upper levels, or monitor your now-secured penthouse, while shooting down any other fleeing VTOL's. You will not be escaping by air. No one will. No escaping by land either: Swarms of her drones are tasing fleeing noncombatants by the hundreds for detainment, as the remainder of her army seizes control of vital arcology infrastructure. After just a few days, the entire arcology falls under her direct control, all dissidents, criminals, and rebels hopelessly outgunned by her lavishly equipped and experienced warriors.`);
+					App.UI.DOM.appendNewElement("div", t, `You are trapped inside your Penthouse by the detachment of infantry guarding its exits in order to keep you in, probably with the goal of starving you out until you surrender yourself. With your communications down as well, your penthouse might as well be an island. You only salvation comes in the form of your neighboring arcologies and their respective mercenary contingents. They are intervening on your behalf out of paranoia; Free Cities are extremely wary of military power buildups near their borders, and they absolutely will not tolerate a full scale military coup within its borders. Fighting men and women from all over the City are seen battling in the streets of your arcology in a brutal blitzkrieg that your own tenants and mercenaries quickly join in on, pushing The Colonel's forces back gradually with sheer numbers. typeually they are forced back into the Firebase proper, where they are sealed inside by using explosives to collapse part of the arcology atop them, rendering the Firebase itself totally defunct. Only a few small groups manage to scatter and flee this holding action, and your intelligence networks suspects that The Colonel herself was among one of them.`);
+					App.UI.DOM.appendNewElement("div", t, `With the help of some unlikely intervention, you've won this little war. Your arcology is once more yours, but your people will never forget the traumatic week they spent under the heel of the army that you convinced them to allow, or the fact that it took an entire coalition of outsiders to save them.`);
+				} else if (passage() === "Manage Penthouse") {
+					App.UI.DOM.appendNewElement("div", t, "Visiting the Firebase just takes you to its entrance. The two guards that usually let you in will now shoo you away at gunpoint.");
+				}
 				break;
 			case "jaded":
-				BadOutcome += 'ASSIMILATION';
-				addTrinket("The Colonel's canteen");
-				r += `Finally weary of your constant intrusions into her territory and crew, The Colonel gathers up her people for a full scale liquidation and dispersal of personnel and assets throughout the Free City itself; they are going to discreetly sell off the majority of their military hardware, assume new identities and melt into the fabric of the Free City's wider population. Gone are the days of plunder and dominion, as this retirement plan will make many of them some of the wealthiest tenants in the entire Free City, and they will no longer need to break their backs living the lives of soldiers. With the liquidation complete and the money distributed, the army moves on to the net stage of the plan.`;
-				r += `<br>At midnight, the lights are the first thing The Colonel's forces disable, as they still have the excellent night vision equipment you purchased for them. Some of your citizens panic almost immediately at the sudden blackout; this is very reminiscent of the Daughters of Liberty attack that still haunts many of their memories. Her army moves fast and quietly throughout the arcology and the streets outside of it, slipping through your security units and drones with an ease that stinks of months of careful planning and study. Most disturbingly, your penthouse's communications networks are all but destroyed, and your PA has been unreachable, seemingly hacked by some obscure technology you figure only The Colonel's contacts and few others could provide.`;
-				r += `<br>Outside, her many aircraft escape the local airspace to patrol the arcology outskirts, evading recon scans, the monitoring systems of your secured penthouse, and the feeble attempts of your sentries to shoot them down. A great many of them will be escaping by air, it seems. Many are escaping by land too: Swarms of personnel carriers and utility trucks are driving off to neighboring arcologies or even neighboring Free Cities by the dozens for retirement, as the remainder of her army purchase new apartments and properties in various arcologies nearby while being dressed in civilian clothing. After just a few days, the entire army has essentially disappeared, hopelessly obscured by mountains of digital noise, detailed fake backstories, lavish fake identities, and lots of bribes and carefully destroyed digital and physical records. Your Special Force has gone completely AWOL and there is nothing you or anyone can do about it. It seems your experienced former warriors have an eye for deception too.`;
-				r += `<br>You are trapped inside your Penthouse by the electricity-cutting digital virus that has kept you inside and communicatively isolated for the past week. Probably with the goal of keeping you in the dark, figuratively and literally, so that you could not intervene in The Colonel's total assimilation into the Free Cities. The lazy bitch did not want to cooperate with your Future Societies plans, so she and her men decided to stop being soldiers altogether, and live off of their savings. Your only relief comes at the midnight of the seventh day, when the virus self-terminates and the arcology's electricity, PA, and communications lines return to full functioning.`;
-				r += `<br>Your arcology is once more yours, but your people will never forget the troubling week they spent in total darkness and lockdown, or the sudden mass desertion and disappearance of the army that you convinced them to allow, or the fact that there was nothing you could do to prevent or mitigate any of it.`;
+				type = 'ASSIMILATION';
+				if (firstExecution) {
+					addTrinket("The Colonel's canteen");
+					App.UI.DOM.appendNewElement("div", t, `Finally weary of your constant intrusions into her territory and crew, The Colonel gathers up her people for a full scale liquidation and dispersal of personnel and assets throughout the Free City itself; they are going to discreetly sell off the majority of their military hardware, assume new identities and melt into the fabric of the Free City's wider population. Gone are the days of plunder and dominion, as this retirement plan will make many of them some of the wealthiest tenants in the entire Free City, and they will no longer need to break their backs living the lives of soldiers. With the liquidation complete and the money distributed, the army moves on to the net stage of the plan.`);
+					App.UI.DOM.appendNewElement("div", t, `At midnight, the lights are the first thing The Colonel's forces disable, as they still have the excellent night vision equipment you purchased for them. Some of your citizens panic almost immediately at the sudden blackout; this is very reminiscent of the Daughters of Liberty attack that still haunts many of their memories. Her army moves fast and quietly throughout the arcology and the streets outside of it, slipping through your security units and drones with an ease that stinks of months of careful planning and study. Most disturbingly, your penthouse's communications networks are all but destroyed, and your PA has been unreachable, seemingly hacked by some obscure technology you figure only The Colonel's contacts and few others could provide.`);
+					App.UI.DOM.appendNewElement("div", t, `Outside, her many aircraft escape the local airspace to patrol the arcology outskirts, evading recon scans, the monitoring systems of your secured penthouse, and the feeble attempts of your sentries to shoot them down. A great many of them will be escaping by air, it seems. Many are escaping by land too: Swarms of personnel carriers and utility trucks are driving off to neighboring arcologies or even neighboring Free Cities by the dozens for retirement, as the remainder of her army purchase new apartments and properties in various arcologies nearby while being dressed in civilian clothing. After just a few days, the entire army has essentially disappeared, hopelessly obscured by mountains of digital noise, detailed fake backstories, lavish fake identities, and lots of bribes and carefully destroyed digital and physical records. Your Special Force has gone completely AWOL and there is nothing you or anyone can do about it. It seems your experienced former warriors have an eye for deception too.`);
+					App.UI.DOM.appendNewElement("div", t, `You are trapped inside your Penthouse by the electricity-cutting digital virus that has kept you inside and communicatively isolated for the past week. Probably with the goal of keeping you in the dark, figuratively and literally, so that you could not intervene in The Colonel's total assimilation into the Free Cities. The lazy bitch did not want to cooperate with your Future Societies plans, so she and her men decided to stop being soldiers altogether, and live off of their savings. Your only relief comes at the midnight of the stypeh day, when the virus self-terminates and the arcology's electricity, PA, and communications lines return to full functioning.`);
+					App.UI.DOM.appendNewElement("div", t, `Your arcology is once more yours, but your people will never forget the troubling week they spent in total darkness and lockdown, or the sudden mass desertion and disappearance of the army that you convinced them to allow, or the fact that there was nothing you could do to prtype or mitigate any of it.`);
+				} else if (passage() === "Manage Penthouse") {
+					App.UI.DOM.appendNewElement("div", t, "Visiting the Firebase just takes you to a very trashy floorspace full of discarded food, apparel, and furniture, as well as piles of empty boxes and crates. The filthy bastards didn't even bother to clean up after themselves.");
+				}
 				break;
 			case "shell shocked":
-				BadOutcome += 'ISOLATION';
-				addTrinket("The Colonel's explosives detonator");
-				r += `Unnerved by your ever-increasing influence over your men and undercutting of her authority, The Colonel uses heavy explosives at Midnight to seal off The Firebase from your access. When you step off of your express elevator, you are met not with two guards, but several armed proximity mines next to an incredibly thick wall of smoking rubble. No doubt there are machine gun nests, anti-tank nests, and lots more proximity mines just waiting for you on the other side, should you somehow get through the wall of debris.`;
-				r += `<br>The ${V.SF.Lower} still deploys into the old world to plunder as it pleases, but no longer for you. You receive no money from their exploits, and their total defiance and independence of you is a permanent stain on your reputation. Of course, you'll never have the needed military power to dislodge them, especially with all the redundant fortifications, crossfire envelopes, and myriad traps that paranoid bitch had built around each entrance ever since she went rogue. Trying to sabotage certain support beams from above to make the Firebase facility collapse in on itself could easily cause enough damage to topple other parts of the arcology too, and such a thing would be very difficult to cover up. In other words, you're stuck with them. The Firebase has become a permanent tumor on your arcology and good name.`;
+				type = 'ISOLATION';
+				if (firstExecution) {
+					addTrinket("The Colonel's explosives detonator");
+					App.UI.DOM.appendNewElement("div", t, `Unnerved by your ever-increasing influence over your men and undercutting of her authority, The Colonel uses heavy explosives at Midnight to seal off The Firebase from your access. When you step off of your express elevator, you are met not with two guards, but several armed proximity mines next to an incredibly thick wall of smoking rubble. No doubt there are machine gun nests, anti-tank nests, and lots more proximity mines just waiting for you on the other side, should you somehow get through the wall of debris.`);
+					App.UI.DOM.appendNewElement("div", t, `The ${V.SF.Lower} still deploys into the old world to plunder as it pleases, but no longer for you. You receive no money from their exploits, and their total defiance and independence of you is a permanent stain on your reputation. Of course, you'll never have the needed military power to dislodge them, especially with all the redundant fortifications, crossfire envelopes, and myriad traps that paranoid bitch had built around each entrance ever since she went rogue. Trying to sabotage certain support beams from above to make the Firebase facility collapse in on itself could easily cause enough damage to topple other parts of the arcology too, and such a thing would be very difficult to cover up. In other words, you're stuck with them. The Firebase has become a permanent tumor on your arcology and good name.`);
+				} else if (passage() === "Manage Penthouse") {
+					App.UI.DOM.appendNewElement("div", t, "Visiting the Firebase just takes you to a thick wall of rubble. You no longer have any way of reaching out to the Special Force.");
+				}
 				break;
 		}
-		const Obj = {
-			Active: -2,
-			Toggle: V.SF.Toggle,
-			ArmySize: V.SF.ArmySize,
-			FS: {
-				Tension: V.SF.FS.Tension,
-				BadOutcome: BadOutcome
-			}
-		};
-		V.SF = Obj;
-		return r;
-	}
-
-	function badOutcomeFirebase(){
-		const x = `Visiting the Firebase just takes you to`;
-		switch (V.SF.FS.BadOutcome) {
-			case 'MIGRATION':
-				return `${x} an empty, eerie storeroom now.`;
-			case 'ANNIHILATION':
-				return `${x} a charnel house of dead bodies, spent ammo casings, collapsed sub-structure, unstable rubble, and live munitions & duds that can detonate at the slightest disturbance. This chamber has proven so troublesome, tedious, and dangerous to clear out that you've decided to halt all salvage operations for the foreseeable future.<br>`;
-			case 'OCCUPATION':
-				return `${x} its entrance. The two guards that usually let you in will now shoo you away at gunpoint.<br>`;
-			case 'ASSIMILATION':
-				return `${x} a very trashy floorspace full of discarded food, apparel, and furniture, as well as piles of empty boxes and crates. The filthy bastards didn't even bother to clean up after themselves.<br>`;
-			case 'ISOLATION':
-				return `${x} a thick wall of rubble. You no longer have any way of reaching out to the Special Force.<br>`;
+		if (firstExecution) {
+			const Obj = {
+				Active: -2,
+				Toggle: V.SF.Toggle,
+				ArmySize: V.SF.ArmySize,
+				Colonel: {Core: V.SF.Colonel.Core},
+				FS: {Tension: V.SF.FS.Tension}
+			};
+			V.SF = Obj;
 		}
+		return [t, type];
 	}
 
 	function validityTester() {
diff --git a/src/art/webgl/art.js b/src/art/webgl/art.js
index 9ff669b41873da2a1d185907330ccf6a0df5a525..d84de114fb5d7aa8a99d37bdf2cb214a4b6f891b 100644
--- a/src/art/webgl/art.js
+++ b/src/art/webgl/art.js
@@ -1900,7 +1900,7 @@ App.Art.getAnimState = function(slave, scene, p, morphs, isAnimTick) {
 						animLength[4] = (Math.random() * 2) + 0.5;
 						animDelay[4] = (Math.floor(Math.random() * 10) + 5) * V.animFPS;
 						animPower[4] = Math.random();
-						
+
 						currentAnim[5] = ((Math.random() < (slave.trust + 100) / 200) ? "down" : "up");
 						eyeMoveReciprocal = (Math.random() > (slave.trust + 100) / 200);
 						animLength[5] = (Math.random() * 2) + 0.5;
@@ -1930,7 +1930,7 @@ App.Art.getAnimState = function(slave, scene, p, morphs, isAnimTick) {
 						if (slave.devotion <= 50) {
 							slaveArmsDown += Math.max(Math.min(-slave.weight/300/3.5, -slave.scrotum/200), -0.5);
 						}
-		
+
 						if (p.applyExtremeHeels || p.applyExtremeHeels2) {
 							slaveLegsClosed += Math.max(Math.min(-slave.weight/300/3.5 - 0.5, -slave.scrotum/20), -1.5);
 						} else {
@@ -1940,7 +1940,7 @@ App.Art.getAnimState = function(slave, scene, p, morphs, isAnimTick) {
 						if (slave.devotion <= 50) {
 							slaveArmsDown += Math.max(-slave.weight/300/3.5, -0.5);
 						}
-		
+
 						if (p.applyExtremeHeels || p.applyExtremeHeels2 && !scene.inspect) {
 							slaveLegsClosed += Math.max(-slave.weight/300/3.5 - 0.5, -1.5);
 						} else {
@@ -2169,7 +2169,7 @@ App.Art.applyMorphs = function(slave, scene, p, isAnimating) {
 					if (slave.devotion <= 50) {
 						morphs.push(["posesArmsDown", Math.max(Math.min(-slave.weight/300/3.5, -slave.scrotum/200), -0.5)]);
 					}
-	
+
 					if (p.applyExtremeHeels || p.applyExtremeHeels2) {
 						morphs.push(["posesLegsClosed", Math.max(Math.min(-slave.weight/300/3.5 - 0.5, -slave.scrotum/20), -1.5)]);
 					} else {
@@ -2179,7 +2179,7 @@ App.Art.applyMorphs = function(slave, scene, p, isAnimating) {
 					if (slave.devotion <= 50) {
 						morphs.push(["posesArmsDown", Math.max(-slave.weight/300/3.5, -0.5)]);
 					}
-	
+
 					if (p.applyExtremeHeels || p.applyExtremeHeels2) {
 						morphs.push(["posesLegsClosed", Math.max(-slave.weight/300/3.5 - 0.5, -1.5)]);
 					} else {
@@ -2188,7 +2188,7 @@ App.Art.applyMorphs = function(slave, scene, p, isAnimating) {
 				}
 			}
 		}
-	
+
 		if (slave.trust < 0) {
 			morphs.push(["expressionsFear", Math.abs(slave.trust)/100]);
 		} else {
diff --git a/src/data/backwardsCompatibility/backwardsCompatibility.js b/src/data/backwardsCompatibility/backwardsCompatibility.js
index 4ccdbd7d84857d8bc4d7c2a936e1b2b876404e14..2d86ff9fbff1504d74b24d3a442dcc5f2e504812 100644
--- a/src/data/backwardsCompatibility/backwardsCompatibility.js
+++ b/src/data/backwardsCompatibility/backwardsCompatibility.js
@@ -747,6 +747,9 @@ App.Update.globalVariables = function(node) {
 			} else if (typeof V.arcologies[0].FSChattelReligionistLaw === "undefined") {
 				V.arcologies[0].FSChattelReligionistLaw = 0;
 			}
+			if (typeof V.arcologies[0].FSChattelReligionistLaw2 === "undefined") {
+				V.arcologies[0].FSChattelReligionistLaw2 = 0;
+			}
 			if ((typeof V.FSRomanRevivalist !== "undefined") && V.FSRomanRevivalist !== "unset") {
 				V.arcologies[0].FSRomanRevivalist = V.FSRomanRevivalist;
 			} else if (typeof V.arcologies[0].FSRomanRevivalist === "undefined") {
@@ -1188,6 +1191,9 @@ App.Update.globalVariables = function(node) {
 		if (typeof V.corp.Incorporated === "undefined") {
 			V.corp = clone(App.Data.CorpInitData);
 		}
+		if (!("Name" in V.corp)) {
+			V.corp.Name = 'Your corporation';
+		}
 	}
 
 	// Organs
diff --git a/src/data/backwardsCompatibility/datatypeCleanup.js b/src/data/backwardsCompatibility/datatypeCleanup.js
index 4404cc44e43527a2aac27d4007a760d571cc7840..952a1c3984b440b7f8c1cd54ddadd419c13378f7 100644
--- a/src/data/backwardsCompatibility/datatypeCleanup.js
+++ b/src/data/backwardsCompatibility/datatypeCleanup.js
@@ -1880,7 +1880,7 @@ globalThis.FacilityDatatypeCleanup = (function() {
 	function FarmyardDatatypeCleanup() {
 		V.farmyard = Math.max(+V.farmyard, 0) || 0;
 		V.farmyardBreeding = Math.clamp(+V.farmyardBreeding, 0, 1) || 0;
-		V.farmyardShows = Math.clamp(+V.farmyardShows, 0, 1) || 0;
+		V.farmyardShows = Math.clamp(+V.farmyardShows, 0, 2) || 0;
 		/* farmer */
 		V.FarmerID = findSlaveId(s => s.assignment === Job.FARMER);
 	}
diff --git a/src/data/newGamePlus.js b/src/data/newGamePlus.js
index f26d71e2526aef9161699bb520a33ff95ea2c6ea..4b539ee70a3d7f34478b024016d18a7d36c52d16 100644
--- a/src/data/newGamePlus.js
+++ b/src/data/newGamePlus.js
@@ -1,6 +1,5 @@
 App.Data.NewGamePlus = (function() {
 	const NGPOffset = 1200000;
-	let pcGenes;
 
 	function ngpSlaveID(id, preserveSpecial=false) {
 		const minID = preserveSpecial ? -20 : -1;
@@ -21,10 +20,6 @@ App.Data.NewGamePlus = (function() {
 		return id;
 	}
 
-	function grabPCGenes() {
-		pcGenes = V.genePool.find(s => s.ID === -1);
-	}
-
 	function PCInit() {
 		if (V.freshPC === 0) {
 			cashX(V.ngpParams.prosperity, "personalBusiness");
@@ -63,7 +58,8 @@ App.Data.NewGamePlus = (function() {
 			const transferredSlaveIds = (V.slaves || [])
 				.filter(s => s.ID >= NGPOffset)
 				.map(s => s.ID - NGPOffset);
-			return genePool
+			const pcGenes = V.genePool.find(s => s.ID === -1);
+			const gp = genePool
 				.filter(s => (transferredSlaveIds.includes(s.ID)))
 				.map(s => {
 					const result = jQuery.extend(true, {}, s);
@@ -74,8 +70,9 @@ App.Data.NewGamePlus = (function() {
 					return result;
 				});
 			if (V.freshPC === 0) {
-				V.genePool.push(pcGenes);
+				gp.push(pcGenes);
 			}
+			return gp;
 		};
 
 		const ngUpdateMissingTable = function(missingTable) {
@@ -240,7 +237,6 @@ App.Data.NewGamePlus = (function() {
 	}
 
 	function doNGPSetup() {
-		grabPCGenes();
 		slaveLoopInit();
 		PCInit();
 		resetFamilyCounters();
diff --git a/src/descriptions/arcologyDescription.js b/src/descriptions/arcologyDescription.js
index 332409c6f9f6ca46ca0e51e1aed01093272c4b95..e7148542fac003dd6a0add06cb9a2e1ac016cdb2 100644
--- a/src/descriptions/arcologyDescription.js
+++ b/src/descriptions/arcologyDescription.js
@@ -772,7 +772,12 @@ App.Desc.playerArcology = function(lastElement) {
 			buffer.push(`On several raised stands around the plaza, female slaves are stripping for the pleasure of passersby.`);
 		}
 		if (A.FSChattelReligionistDecoration >= 80) {
-			buffer.push(`A handful of slaves are in religious attire, praying. They help if asked, and will even lead brief religious services if requested.`);
+			if (A.FSChattelReligionistLaw2 === 1) {
+				buffer.push(`A handful of nude slaves are praying.`);
+			} else {
+				buffer.push(`A handful of slaves are in religious attire, praying.`);
+			}
+			buffer.push(`They help if asked, and will even lead brief religious services if requested.`);
 		}
 		if (A.FSDegradationistDecoration >= 80) {
 			buffer.push(`Numerous downtrodden slaves are working on the plaza at menial tasks. Some are even carrying citizens in sedan chairs.`);
diff --git a/src/descriptions/officeDescription.js b/src/descriptions/officeDescription.js
index 29f72b3a6974c8d9bf0359c7ba3cd50bbde98257..07e72e31554197a3cd889c18726837e9e0931dc9 100644
--- a/src/descriptions/officeDescription.js
+++ b/src/descriptions/officeDescription.js
@@ -260,11 +260,9 @@ App.Desc.officeDescription = function(lastElement) {
 						break;
 					case "shemale":
 						r.push(`a pinup of ${himselfA} to its plating: ${heA}'s depicted straddling a battle rifle so closely that it looks like ${heA}'s intimately entangled in the action.`);
-
 						break;
 					case "amazon":
 						r.push(`a pinup of ${himselfA} to its plating: ${heA}'s depicted in a classic nude bodybuilder's pose, but with a cutely coquettish expression.`);
-
 						break;
 					case "businesswoman":
 						r.push(`a pinup of ${himselfA} to its plating: ${heA}'s depicted wearing underwear, for once, and looking very severe as ${heA} straddles a cruise missile in a classic bombshell pose.`);
@@ -466,42 +464,60 @@ App.Desc.officeDescription = function(lastElement) {
 	function printTrinkets() {
 		const frag = new DocumentFragment();
 
-		/** @type {Array<HTMLElement>} */
-		let trinketElements = [];
-		let plurals = false;
+		// depending on length of trinketString, add necessary conjunctions
+		frag.append(
+			`There's a display case behind your desk, with `,
+			App.UI.DOM.linkReplace(`${num(V.trinkets.size)} items`, trinkets()),
+			` in it.`,
+		);
 
-		for (const [trinketDesc, value] of V.trinkets) {
-			if ((typeof value === "number" && value === 1) || (Array.isArray(value) && value.length === 0)) {
-				trinketElements.push(App.UI.DOM.makeElement("li", capFirstChar(trinketDesc)));
-			} else {
-				trinketElements.push(trinketPluralReplacer(trinketDesc, value));
-				plurals = true;
-			}
-		}
-		trinketElements.sort((a, b) => a > b ? 1 : -1);
+		return frag;
 
-		// depending on length of trinketString, add necessary conjunctions
-		frag.append(`There's a display case behind your desk, with `);
-		if (trinketElements.length === 1) {
-			if (V.trinkets.size === 1) {
-				frag.append(`a single item:`);
-			} else {
-				frag.append(`:`);
-			}
-		} else if (trinketElements.length === 2 && plurals === false) {
-			frag.append(`a couple of items:`);
+		function trinkets() {
+			const span = document.createElement("span");
+			const trinkets = [...V.trinkets];
+
+			trinkets.forEach((trinket, i) => {
+				const innerSpan = document.createElement("span");
+
+				if (trinkets.length > 1) {
+					if (i === trinkets.length - 1) {
+						if ((typeof trinket[1] === "number" && trinket[1] === 1) || (Array.isArray(trinket[1]) && trinket[1].length === 0)) {
+							innerSpan.append(
+								` and `,
+								trinket[0],
+							);
+						} else {
+							if (typeof trinket[1] !== "number") {
+								innerSpan.append(
+									` and `,
+									trinketPluralReplacer(trinket[0], trinket[1]),
+								);
+							}
+						}
+					} else {
+						innerSpan.append(`${trinket[0]}`);
+
+						if (trinkets.length > 2) {
+							innerSpan.append(`, `);
+						}
+					}
+				} else {
+					innerSpan.append(`a ${trinket[0]}`);
+				}
+
+				span.append(innerSpan);
+			});
+
+			return span;
 		}
-		const list = App.UI.DOM.appendNewElement("ul", frag);
-		list.style.textIndent = "0";
-		trinketElements.forEach(ts => App.UI.DOM.appendNewElement("li", list, ts));
-		return frag;
 	}
 
 	/**
 	 *
 	 * @param {string} desc
 	 * @param {Array} array
-	 * @returns {HTMLElement}
+	 * @returns {HTMLSpanElement}
 	 */
 	function trinketPluralReplacer(desc, array) {
 		const his = (array && array[0] && array[0].id && getSlave(array[0].id) ? getPronouns(getSlave(array[0].id)).possessive : "their");
@@ -511,9 +527,9 @@ App.Desc.officeDescription = function(lastElement) {
 				if (array.length > 0) {
 					const el = document.createElement("span");
 					if (array.length === 1) {
-						App.Events.addNode(el, [`A best in show ribbon awarded to`, slaveSentence(array), `for ${his} balls`]);
+						App.Events.addNode(el, [`a best in show ribbon awarded to`, slaveSentence(array), `for ${his} balls`]);
 					} else {
-						App.Events.addNode(el, [`Best in show ribbons awarded to`, slaveSentence(array), `for their balls`]);
+						App.Events.addNode(el, [`best in show ribbons awarded to`, slaveSentence(array), `for their balls`]);
 					}
 					return el;
 				} else {
@@ -523,9 +539,9 @@ App.Desc.officeDescription = function(lastElement) {
 				if (array.length > 0) {
 					const el = document.createElement("span");
 					if (array.length === 1) {
-						App.Events.addNode(el, [`A best in show ribbon awarded to`, slaveSentence(array), `as a milk cow`]);
+						App.Events.addNode(el, [`a best in show ribbon awarded to`, slaveSentence(array), `as a milk cow`]);
 					} else {
-						App.Events.addNode(el, [`Best in show ribbons awarded to`, slaveSentence(array), `as milk cows`]);
+						App.Events.addNode(el, [`best in show ribbons awarded to`, slaveSentence(array), `as milk cows`]);
 					}
 					return el;
 				} else {
@@ -535,9 +551,9 @@ App.Desc.officeDescription = function(lastElement) {
 				if (array.length > 0) {
 					const el = document.createElement("span");
 					if (array.length === 1) {
-						App.Events.addNode(el, [`A best in show ribbon awarded to`, slaveSentence(array), `as a breeder`]);
+						App.Events.addNode(el, [`a best in show ribbon awarded to`, slaveSentence(array), `as a breeder`]);
 					} else {
-						App.Events.addNode(el, [`Best in show ribbons awarded to`, slaveSentence(array), `as breeders`]);
+						App.Events.addNode(el, [`best in show ribbons awarded to`, slaveSentence(array), `as breeders`]);
 					}
 					return el;
 				} else {
@@ -547,9 +563,9 @@ App.Desc.officeDescription = function(lastElement) {
 				if (array.length > 0) {
 					const el = document.createElement("span");
 					if (array.length === 1) {
-						App.Events.addNode(el, [`A framed article written about`, slaveSentence(array), `when ${he} debuted as a famous courtesan`]);
+						App.Events.addNode(el, [`a framed article written about`, slaveSentence(array), `when ${he} debuted as a famous courtesan`]);
 					} else {
-						App.Events.addNode(el, [`Framed articles written about`, slaveSentence(array), `when they debuted as famous courtesans`]);
+						App.Events.addNode(el, [`framed articles written about`, slaveSentence(array), `when they debuted as famous courtesans`]);
 					}
 					return el;
 				} else {
@@ -559,9 +575,9 @@ App.Desc.officeDescription = function(lastElement) {
 				if (array.length > 0) {
 					const el = document.createElement("span");
 					if (array.length === 1) {
-						App.Events.addNode(el, [`A framed pornographic advertisement for`, slaveSentence(array), `from the week ${he} became a famous whore`]);
+						App.Events.addNode(el, [`a framed pornographic advertisement for`, slaveSentence(array), `from the week ${he} became a famous whore`]);
 					} else {
-						App.Events.addNode(el, [`Framed pornographic advertisements from`, slaveSentence(array), `from the weeks they became famous whores`]);
+						App.Events.addNode(el, [`framed pornographic advertisements from`, slaveSentence(array), `from the weeks they became famous whores`]);
 					}
 					return el;
 				} else {
@@ -571,9 +587,9 @@ App.Desc.officeDescription = function(lastElement) {
 				if (array.length > 0) {
 					const el = document.createElement("span");
 					if (array.length === 1) {
-						App.Events.addNode(el, [`A gorgeous quasi-religious icon made by`, slaveSentence(array), `showing you creating the catgirl race`]);
+						App.Events.addNode(el, [`a gorgeous quasi-religious icon made by`, slaveSentence(array), `showing you creating the catgirl race`]);
 					} else {
-						App.Events.addNode(el, [`Gorgeous quasi-religious icons made by`, slaveSentence(array), `showing you creating the catgirl race`]);
+						App.Events.addNode(el, [`gorgeous quasi-religious icons made by`, slaveSentence(array), `showing you creating the catgirl race`]);
 					}
 					return el;
 				} else {
@@ -583,9 +599,9 @@ App.Desc.officeDescription = function(lastElement) {
 				if (array.length > 0) {
 					const el = document.createElement("span");
 					if (array.length === 1) {
-						App.Events.addNode(el, [`A small, elegant clay sculpture made by`, slaveSentence(array), `showing you surrounded by happy catgirl slaves`]);
+						App.Events.addNode(el, [`a small, elegant clay sculpture made by`, slaveSentence(array), `showing you surrounded by happy catgirl slaves`]);
 					} else {
-						App.Events.addNode(el, [`Small, elegant clay sculptures made by`, slaveSentence(array), `showing you surrounded by happy catgirl slaves`]);
+						App.Events.addNode(el, [`small, elegant clay sculptures made by`, slaveSentence(array), `showing you surrounded by happy catgirl slaves`]);
 					}
 					return el;
 				} else {
@@ -595,9 +611,9 @@ App.Desc.officeDescription = function(lastElement) {
 				if (array.length > 0) {
 					const el = document.createElement("span");
 					if (array.length === 1) {
-						App.Events.addNode(el, [`A pretty drawing of you and`, slaveSentence(array), `cuddling together peacefully`]);
+						App.Events.addNode(el, [`a pretty drawing of you and`, slaveSentence(array), `cuddling together peacefully`]);
 					} else {
-						App.Events.addNode(el, [`Pretty drawings of you and`, slaveSentence(array), `cuddling together peacefully`]);
+						App.Events.addNode(el, [`pretty drawings of you and`, slaveSentence(array), `cuddling together peacefully`]);
 					}
 					return el;
 				} else {
@@ -607,9 +623,9 @@ App.Desc.officeDescription = function(lastElement) {
 				if (array.length > 0) {
 					const el = document.createElement("span");
 					if (array.length === 1) {
-						App.Events.addNode(el, [`A red construction paper heart with crude crayon figures of you and`, slaveSentence(array), `holding hands above text reading "I LUV U ${V.PC.title !== 0 ? `MASTER` : `MISTRESS`}"`]);
+						App.Events.addNode(el, [`a red construction paper heart with crude crayon figures of you and`, slaveSentence(array), `holding hands above text reading "I LUV U ${V.PC.title !== 0 ? `MASTER` : `MISTRESS`}"`]);
 					} else {
-						App.Events.addNode(el, [`Red construction paper hearts with crude crayon figures of you and`, slaveSentence(array), `holding hands above text reading "I LUV U ${V.PC.title !== 0 ? `MASTER` : `MISTRESS`}"`]);
+						App.Events.addNode(el, [`red construction paper hearts with crude crayon figures of you and`, slaveSentence(array), `holding hands above text reading "I LUV U ${V.PC.title !== 0 ? `MASTER` : `MISTRESS`}"`]);
 					}
 					return el;
 				} else {
@@ -619,7 +635,7 @@ App.Desc.officeDescription = function(lastElement) {
 				if (array.length > 0) {
 					const el = document.createElement("span");
 					if (array.length === 1) {
-						App.Events.addNode(el, [`A cloth napkin skillfully folded into the shape of`, array[0].napkinShape, `given to you by`, slaveSentence(array)]);
+						App.Events.addNode(el, [`a cloth napkin skillfully folded into the shape of`, array[0].napkinShape, `given to you by`, slaveSentence(array)]);
 					} else {
 						const r = [];
 						// Napkins are weird; we need to sort by two properties: napkinShape and the slave. First, set up a map of the types of napkins, and attach the appropriate slaves to them by array:
@@ -630,7 +646,7 @@ App.Desc.officeDescription = function(lastElement) {
 							}
 							napkinMap.get(slave.napkinShape).push(slave);
 						}
-						r.push(`Cloth napkins skillfully folded into ${napkinMap.size === 1 ? "a single shape" : "various shapes"} by your slaves.`);
+						r.push(`cloth napkins skillfully folded into ${napkinMap.size === 1 ? "a single shape" : "various shapes"} by your slaves.`);
 						// Make a fragment for each napkin type that we have, including the slaves that made that type
 						for (const [shape, slaves] of napkinMap) {
 							r.push(App.UI.DOM.combineNodes(slaveSentence(slaves), ` ${slaves.length === 1 ? "" : "each "}made ${shape}.`,));
@@ -643,7 +659,7 @@ App.Desc.officeDescription = function(lastElement) {
 				}
 			case "a poster for the movie that was made about the love between one of your mercenaries and": {
 				const el = document.createElement("span");
-				el.append("A poster for the movie that was made about the love between one of your mercenaries and ", slaveSentence(array), ".");
+				el.append("a poster for the movie that was made about the love between one of your mercenaries and ", slaveSentence(array), ".");
 				return el;
 			}
 			// should never have plurals
@@ -662,10 +678,10 @@ App.Desc.officeDescription = function(lastElement) {
 			case "a Daughters of Liberty flag that once hung in their forward command post within your arcology":
 			case "a Daughters of Liberty brassard":
 			case "a shot-torn flag of the failed nation whose militants attacked the Free City":
-				return App.UI.DOM.makeElement("span", capFirstChar(desc));
+				return App.UI.DOM.makeElement("span", desc);
 			// manual replacement
 			case "a thank-you note from a MILF tourist whom you made feel welcome in the arcology":
-				return App.UI.DOM.makeElement("span", "Several thank-you notes from MILF tourists whom you made feel welcome in the arcology");
+				return App.UI.DOM.makeElement("span", "several thank-you notes from MILF tourists whom you made feel welcome in the arcology");
 			// replacement by groups
 			default:
 				if (desc.endsWith("citizen")) { // will not reduce spam from different future societies
@@ -681,7 +697,7 @@ App.Desc.officeDescription = function(lastElement) {
 					desc = desc.replace("a ", "several ");
 					desc = desc.replace("owner", "owners");
 				}
-				return App.UI.DOM.makeElement("span", capFirstChar(desc));
+				return App.UI.DOM.makeElement("span", desc);
 		}
 
 		/**
diff --git a/src/endWeek/economics/persBusiness.js b/src/endWeek/economics/persBusiness.js
index 3d5011b1ed1111905ef1f378718b8dfc075f2256..91dc5b53e669e8bae694741894774423556409c4 100644
--- a/src/endWeek/economics/persBusiness.js
+++ b/src/endWeek/economics/persBusiness.js
@@ -1251,8 +1251,12 @@ App.EndWeek.personalBusiness = function() {
 	}
 	App.Events.addParagraph(el, r);
 
-	if (V.SF.Toggle && V.SF.Active >= 1) {
-		el.append(App.Mods.SF.AAR()[0]);
+	if (V.SF.Toggle) {
+		if (V.SF.Active >= 1) {
+			el.append(App.Mods.SF.AAR()[0]);
+		} else if (V.SF.FS.Tension > 100) {
+			el.append(App.Mods.SF.fsIntegration.crisis()[0]);
+		}
 	}
 	return el;
 };
diff --git a/src/endWeek/economics/reputation.js b/src/endWeek/economics/reputation.js
index de6e1493a4ca0e41a0a756c893cd8154ba4436f8..4e280d0a7c64a656eaba8f604ba5e2d830f9ddbf 100644
--- a/src/endWeek/economics/reputation.js
+++ b/src/endWeek/economics/reputation.js
@@ -344,7 +344,7 @@ App.EndWeek.reputation = function() {
 		sfArray.push(`portion of ${V.SF.Lower} to <span class="green">undercover work, slightly boosts your reputation.</span>`);
 		App.Events.addNode(el, sfArray, "div");
 		repX(V.SF.ArmySize * (V.SF.UC.Assign === 1 ? 0.05 : 0.25), "specialForces");
-	} else if (V.SF.FS.BadOutcome === "ISOLATION") {
+	} else if (V.SF.Toggle && V.SF.FS.Tension > 100 && App.Mods.SF.fsIntegration.crisis()[1] === "ISOLATION") {
 		r.push(App.UI.DOM.makeElement("div", `Your citizens are <span class="red">very displeased</span> that you are hosting a legion of heavily armed squatters in your basement.`));
 		repX(forceNeg(V.SF.ArmySize + App.Mods.SF.upgrades.total()), "specialForces");
 	}
diff --git a/src/endWeek/events/expire.js b/src/endWeek/events/expire.js
index fbfe2995143f3fe66e287ffe8c88c4d07651eb13..36c51fb29cbe2aabf948a2cd192f9b665f6e4bc4 100644
--- a/src/endWeek/events/expire.js
+++ b/src/endWeek/events/expire.js
@@ -57,14 +57,12 @@ App.Events.SEExpiration = class SEExpiration extends App.Events.BaseEvent {
 			}
 
 			r.push(App.UI.DOM.combineNodes(App.UI.DOM.slaveDescriptionDialog(slave, slave.slaveName), `'s indentured servitude is ending this week, meaning that your arcology is gaining a citizen.`));
-			V.lowerClass += 1;
+			V.lowerClass++;
 
 			let seed = 0;
-			for (const seeXp of V.slaves) {
-				if (seeXp.devotion <= 20) {
-					seed = 1;
-					seeXp.devotion -= 1;
-				}
+			for (const seeXp of V.slaves.filter(s => s.devotion <= 20)) {
+				seed = 1;
+				seeXp.devotion--;
 			}
 			if (seed === 1) {
 				r.push(`Those of your slaves who are unhappy with their lives under you are <span class="mediumorchid">envious or angry</span> to see ${him} become free, according to their individual natures.`);
@@ -77,13 +75,8 @@ App.Events.SEExpiration = class SEExpiration extends App.Events.BaseEvent {
 			let cost = slaveCost(slave);
 
 			if (slave.fetish === "mindbroken") {
-				r.push(`Since ${he} is mindbroken, there is precisely no chance that ${he} will be able to look after ${himself}. ${He}`);
-				if (hasAnyLegs(slave)) {
-					r.push(`stands`);
-				} else {
-					r.push(`sits`);
-				}
-				r.push(`before you dumbly, betraying no reaction to the prospect of becoming free from sexual slavery. In situations like this, it is perfectly acceptable to subject ${him} to another indenture for ${his} own good.`);
+				r.push(`Since ${he} is mindbroken, there is precisely no chance that ${he} will be able to look after ${himself}.`);
+				r.push(`${He} ${hasAnyLegs(slave) ? 'stands' : 'sits'} before you dumbly, betraying no reaction to the prospect of becoming free from sexual slavery. In situations like this, it is perfectly acceptable to subject ${him} to another indenture for ${his} own good.`);
 
 				if (V.cash > 1000) {
 					App.UI.DOM.appendNewElement("div", result, App.UI.DOM.link(
@@ -97,7 +90,7 @@ App.Events.SEExpiration = class SEExpiration extends App.Events.BaseEvent {
 						`This costs ${cashFormat(1000)}`
 					));
 				} else {
-					App.UI.DOM.appendNewElement("div", result, `You cannot afford to do this`, "note");
+					App.UI.DOM.appendNewElement("div", result, `You cannot afford to do this`, ["note"]);
 				}
 			} else if ((slave.relationship < -1) && (slave.devotion > 95) && (slave.trust > 95)) {
 				r.push(`${He} has been trying desperately hard not to think about this trying situation, but when ${he} comes before you on the day of ${his} indenture's expiration, ${he} can ignore it no longer. ${He}`);
@@ -124,20 +117,11 @@ App.Events.SEExpiration = class SEExpiration extends App.Events.BaseEvent {
 							r.push(`${He}'s beside ${himself} with joy when you accept ${his} plea and enslave ${him}. ${He}'s given you the finest proof of loyalty a slave possibly can, having tasted a moment of freedom under the law, and thrown it away with utter contempt.`);
 							if (hasAnyEyes(slave)) {
 								r.push(`${His} ${App.Desc.eyesColor(slave)}`);
-								if (hasBothEyes(slave)) {
-									if (canSee(slave)) {
-										r.push(`watch you`);
-									} else {
-										r.push(`are wide`);
-									}
+								if (canSee(slave)) {
+									r.push(`${hasBothEyes(slave) ? 'watch' : 'watches'} you with`);
 								} else {
-									if (canSee(slave)) {
-										r.push(`watches you`);
-									} else {
-										r.push(`is wide`);
-									}
+									r.push(`${hasBothEyes(slave) ? 'are' :'is'} wide with`);
 								}
-								r.push(`with`);
 							} else {
 								r.push(`${His} face shows`);
 							}
@@ -153,19 +137,14 @@ App.Events.SEExpiration = class SEExpiration extends App.Events.BaseEvent {
 						`This costs ${cashFormat(1000)}`
 					));
 				} else {
-					App.UI.DOM.appendNewElement("div", result, `You cannot afford to do this`, "note");
+					App.UI.DOM.appendNewElement("div", result, `You cannot afford to do this`, ["note"]);
 				}
 			} else if ((slave.devotion > 50) && (slave.trust > 50)) {
 				cost = Math.trunc((cost * 0.5) / 500) * 500;
 				cost = Math.clamp(cost, minimumSlaveCost(), 100000);
 
 				r.push(`${His} feelings on this are quite mixed, since ${he} has come to feel that ${he} has a place under you.`);
-				if (!hasAnyLegs(slave)) {
-					r.push(`Propped up`);
-				} else {
-					r.push(`Standing before you`);
-				}
-				r.push(`at the moment of ${his} scheduled emancipation, ${he} seems to be struggling to express ${himself}.`);
+				r.push(`${!hasAnyLegs(slave) ? 'Propped up' : 'Standing before you'} at the moment of ${his} scheduled emancipation, ${he} seems to be struggling to express ${himself}.`);
 				if (!canTalk(slave)) {
 					r.push(`${He} does ${his} best to communicate a willingness to remain your slave, indicating that ${he} wouldn't press too hard about the price if you offered ${him} another indenture.`);
 				} else {
@@ -186,16 +165,11 @@ App.Events.SEExpiration = class SEExpiration extends App.Events.BaseEvent {
 						`This costs ${cashFormat(cost)}`
 					));
 				} else {
-					App.UI.DOM.appendNewElement("div", result, `You cannot afford to do this`, "note");
+					App.UI.DOM.appendNewElement("div", result, `You cannot afford to do this`, ["note"]);
 				}
 			} else if ((slave.devotion >= -20) && (slave.trust > 20)) {
 				r.push(`${He} approaches the moment with calculation, since ${he} has found more of a place in slavery than ${he} probably expected when ${he} became an indentured servant.`);
-				if (!hasAnyLegs(slave)) {
-					r.push(`Propped up`);
-				} else {
-					r.push(`Standing before you`);
-				}
-				r.push(`at the moment of ${his} scheduled emancipation, ${he} seems willing to consider a short term continuation of service.`);
+				r.push(`${!hasAnyLegs(slave) ? 'Propped up' : 'Standing before you'} at the moment of ${his} scheduled emancipation, ${he} seems willing to consider a short term continuation of service.`);
 
 				if (V.cash > cost) {
 					App.UI.DOM.appendNewElement("div", result, App.UI.DOM.link(
@@ -209,7 +183,7 @@ App.Events.SEExpiration = class SEExpiration extends App.Events.BaseEvent {
 						`This costs ${cashFormat(cost)}`
 					));
 				} else {
-					App.UI.DOM.appendNewElement("div", result, `You cannot afford to do this`, "note");
+					App.UI.DOM.appendNewElement("div", result, `You cannot afford to do this`, ["note"]);
 				}
 			} else {
 				r.push(`${He} makes no effort at all to conceal ${his} joy at being a free ${woman} again.`);
@@ -224,8 +198,8 @@ App.Events.SEExpiration = class SEExpiration extends App.Events.BaseEvent {
 			}
 			App.Events.addNode(desc, r);
 			App.UI.DOM.appendNewElement("h3", el, `Final notes?`);
-			const note = App.UI.DOM.appendNewElement("div", el, null, "note");
-			App.UI.DOM.appendNewElement("div", note, `${His} most recent task was to ${(V.assignmentRecords[slave]) ? `${slave.assignment}, and before that to ${V.assignmentRecords[slave]}` : slave.assignment}.`, "indent");
+			const note = App.UI.DOM.appendNewElement("div", el, null, ["note"]);
+			App.UI.DOM.appendNewElement("div", note, `${His} most recent task was to ${(V.assignmentRecords[slave]) ? `${slave.assignment}, and before that to ${V.assignmentRecords[slave]}` : slave.assignment}.`, ["indent"]);
 			note.append(slaveImpactLongTerm(slave));
 
 			return el;
@@ -233,7 +207,7 @@ App.Events.SEExpiration = class SEExpiration extends App.Events.BaseEvent {
 			function keepSlave(cost) {
 				cashX(forceNeg(cost), "slaveTransfer", slave);
 				that.actors.delete(slave.ID);
-				V.lowerClass -= 1;
+				V.lowerClass--;
 			}
 		}
 	}
diff --git a/src/endWeek/nextWeek/nextWeek.js b/src/endWeek/nextWeek/nextWeek.js
index 07b9448efcb00d210238e031d38eebf625397a2e..0c1c8b3d6fee1597126502e6e79261401a439824 100644
--- a/src/endWeek/nextWeek/nextWeek.js
+++ b/src/endWeek/nextWeek/nextWeek.js
@@ -389,9 +389,7 @@ App.EndWeek.nextWeek = function() {
 	}
 
 	if (V.SF.Toggle && V.SF.FS.Tension > 100) {
-		if (V.rep > 17500) {
-			V.rep = 17500;
-		}
+		App.Mods.SF.fsIntegration.crisis();
 	}
 	V.NaNArray = findNaN();
 
diff --git a/src/endWeek/player/prDiet.js b/src/endWeek/player/prDiet.js
index 0c48594c9050a3ac2524abd5d714bfd4eaeedc6c..b597b57253c29152e473e68ce42078396320b4b1 100644
--- a/src/endWeek/player/prDiet.js
+++ b/src/endWeek/player/prDiet.js
@@ -175,7 +175,7 @@ App.EndWeek.Player.diet = function(PC = V.PC) {
 						roll = 200;
 						target = Math.trunc(Math.clamp(weightShift * 2 + (boobSize - growthGoal) / 20, 0, 68));
 					}
-					if (random(1, roll) <= target && gigantomastiaMod !== 3 && boobSize >= 100) {
+					if (random(1, roll) <= target && gigantomastiaMod !== 3 && boobSize > 100) {
 						r.push(`<span class="change negative">Your chest has gotten a little smaller.</span>`);
 						if (random(1, 2) === 1) {
 							PC.boobs -= 20;
@@ -369,7 +369,7 @@ App.EndWeek.Player.diet = function(PC = V.PC) {
 						r.push(`Your balls feel heavy and full; further inspection reveals they've <span class="change positive">grown</span> under your diet.`);
 						PC.balls += 1;
 					}
-					if ((PC.geneMods.NCS === 0 && boobSize > 400- (V.feeder * 100)) || (PC.geneMods.NCS === 1 && boobSize > 200) && gigantomastiaMod !== 3) {
+					if ((PC.geneMods.NCS === 0 && boobSize > 400 - (V.feeder * 100)) || (PC.geneMods.NCS === 1 && boobSize > 200) && gigantomastiaMod !== 3) {
 						r.push(`Your chest <span class="change negative">slims down slightly.</span>`);
 						PC.boobs -= 10;
 						if (PC.geneMods.NCS === 1) {
@@ -740,7 +740,7 @@ App.EndWeek.Player.diet = function(PC = V.PC) {
 			}
 			PC.muscles = Math.clamp(PC.muscles, 0, 100);
 			if (PC.muscles <= 0) {
-				r.push(`You've finally shed the last of your visible muscles, so you will be<span class="noteworthy">resuming a normal diet</span> next week.`);
+				r.push(`You've finally shed the last of your visible muscles, so you will be <span class="noteworthy">resuming a normal diet</span> next week.`);
 				PC.diet = "healthy";
 			}
 		} else {
@@ -788,7 +788,7 @@ App.EndWeek.Player.diet = function(PC = V.PC) {
 			roll = 75;
 			target = Math.trunc(Math.clamp(weightMod * 2 + (boobSize - growthGoal) / 20, 0, 68));
 		}
-		if (random(1, roll) <= target && (gigantomastiaMod !== 3 && boobSize >= 100)) {
+		if (random(1, roll) <= target && (gigantomastiaMod !== 3 && boobSize > 100)) {
 			if (random(1, 2) === 1) {
 				r.push(`<span class="change negative">Your chest has gotten smaller.</span>`);
 				PC.boobs -= 100;
diff --git a/src/endWeek/player/prDrugs.js b/src/endWeek/player/prDrugs.js
index c91d6abc8dbabc9f379b385ac179b5d075fa5d31..8b6ddbb7e78dcb575121bb0537dc315240bcfd66 100644
--- a/src/endWeek/player/prDrugs.js
+++ b/src/endWeek/player/prDrugs.js
@@ -1494,7 +1494,7 @@ App.EndWeek.Player.drugs = function(PC = V.PC) {
 			case "breast redistributors":
 				r.push(`You directly inject fat redistributors into your breasts before bed each night,`);
 				if (gigantomastiaMod !== 3) {
-					r.push(`encouraging your body to move fatty tissue from them to your core.`);
+					r.push(`encouraging your body to move fatty tissue from them to your`);
 					if (PC.geneMods.NCS === 1) {
 						r.push(`core, with your <span class="ncs">NCS</span> enhancing its effects.`);
 					} else {
@@ -1532,7 +1532,7 @@ App.EndWeek.Player.drugs = function(PC = V.PC) {
 				}
 				break;
 			case "butt redistributors":
-				r.push(`You directly inject fat redistributors into your buttocks before bed each night, encouraging your body to move fatty tissue from them to your core.`);
+				r.push(`You directly inject fat redistributors into your buttocks before bed each night, encouraging your body to move fatty tissue from them to your`);
 				if (PC.geneMods.NCS === 1 && rearLipedemaMod === 0) {
 					r.push(`core, with your <span class="ncs">NCS</span> enhancing its effects.`);
 				} else {
@@ -1634,7 +1634,7 @@ App.EndWeek.Player.drugs = function(PC = V.PC) {
 			r.push(`You find yourself <span class="libido inc">fucking harder than you ever have before</span> and the payout more intense than you can imagine.`);
 			PC.energy += 3;
 		} else {
-			r.push(`While you're always ready to go on a moments notice, you already are even before you take the pills. The increased intensity of your climaxes, however, makes it worthwhile still.`);
+			r.push(`While you're always ready to go on a moment's notice, you already are even before you take the pills. The increased intensity of your climaxes, however, makes it worthwhile still.`);
 		}
 		PC.chem += 0.5;
 	}
@@ -1739,7 +1739,7 @@ App.EndWeek.Player.drugs = function(PC = V.PC) {
 				break;
 			case "testicle enlargers":
 				if (PC.balls >= 125) {
-					r.push(`Your balls have balloon to such an obscene size that the patches can no longer diffuse the drugs into them to a degree needed for further growth. <span class="noteworthy">You stop using them.</span>`);
+					r.push(`Your balls have ballooned to such an obscene size that the patches can no longer diffuse the drugs into them to a degree needed for further growth. <span class="noteworthy">You stop using them.</span>`);
 					PC.drugs = "no drugs";
 				}
 				break;
diff --git a/src/endWeek/player/prHormones.js b/src/endWeek/player/prHormones.js
index d71858ecc17fa167bc2185f687559667c557650c..534f2fcad7e08f2927994e54e596f1178cd480e6 100644
--- a/src/endWeek/player/prHormones.js
+++ b/src/endWeek/player/prHormones.js
@@ -82,10 +82,10 @@ App.EndWeek.Player.hormones = function(PC, selfManufactured, hormonePower) {
 			}
 		} else {
 			r.push(`Your hormone balance is very androgynous`);
-			if (PC.hormones === 1) {
-				r.push(r.pop() + `, but are taking male hormones in an attempt to become more masculine.`);
-			} else if (PC.hormones === -1) {
-				r.push(r.pop() + `, but are taking female hormones in an attempt to become more feminine.`);
+			if (PC.hormones === -1) {
+				r.push(r.pop() + `, but you are taking male hormones in an attempt to become more masculine.`);
+			} else if (PC.hormones === 1) {
+				r.push(r.pop() + `, but you are taking female hormones in an attempt to become more feminine.`);
 			} else {
 				r.push(r.pop() + `.`);
 			}
diff --git a/src/endWeek/player/prLongTermPhysicalEffects.js b/src/endWeek/player/prLongTermPhysicalEffects.js
index 25c1bd4f9e3abff912f06b093fe80d373ae2af1a..0fcf7bd32b2b7258b96e35e2904e1102c3abd952 100644
--- a/src/endWeek/player/prLongTermPhysicalEffects.js
+++ b/src/endWeek/player/prLongTermPhysicalEffects.js
@@ -70,7 +70,7 @@ App.EndWeek.Player.longTermPhysicalEffects = function(PC = V.PC) {
 						}
 						r.push(`will require braces to correct.`);
 					} else {
-						r.push(`Such a <span class="noteworthy">lovely smile</span> will be a boon when business deals.`);
+						r.push(`Such a <span class="noteworthy">lovely smile</span> will be a boon when negotiating business deals.`);
 						PC.teeth = "normal";
 					}
 				}
@@ -957,10 +957,10 @@ App.EndWeek.Player.longTermPhysicalEffects = function(PC = V.PC) {
 						cashX(forceNeg(500), "PCmedical");
 						break;
 					case 2:
-						r.push(`A bout of intense vertigo kept you stuck in bed, unwilling to move. Eventually the feeling passes on it's own, just as suddenly as it arrived.`);
+						r.push(`A bout of intense vertigo kept you stuck in bed, unwilling to move. Eventually the feeling passes on its own, just as suddenly as it arrived.`);
 						break;
 					case 3:
-						r.push(`You spent the morning experiencing an unshakable sense of dread. Eventually the feeling passes on it's own, just as suddenly as it arrived.`);
+						r.push(`You spent the morning experiencing an unshakable sense of dread. Eventually the feeling passes on its own, just as suddenly as it arrived.`);
 						break;
 					case 4:
 						r.push(`You're plagued by a series of severe headaches that are calmed easily enough by a dose of aspirin each.`);
diff --git a/src/endWeek/reports/clubReport.js b/src/endWeek/reports/clubReport.js
index 9431446209c442d5e1c26798c90dbda0ddf73878..acd6bdcef368c86ab7fe3cbe1c09ad8e4adce2a1 100644
--- a/src/endWeek/reports/clubReport.js
+++ b/src/endWeek/reports/clubReport.js
@@ -5,6 +5,7 @@ App.EndWeek.clubReport = function() {
 	const el = new DocumentFragment();
 	let r;
 
+	const dj = S.DJ ? App.SlaveAssignment.reportSlave(S.DJ) : undefined;
 	const slaves = App.Utils.sortedEmployees(App.Entity.facilities.club);
 
 	// Statistics gathering; income is rep boosts in numbers, and profit will be rep per cash unit, or cash unit per rep
@@ -118,13 +119,13 @@ App.EndWeek.clubReport = function() {
 					el,
 					[
 						He,
-						App.SlaveAssignment.serveThePublic(S.DJ)
+						App.SlaveAssignment.serveThePublic(dj)
 					],
 					"div",
 					"indent"
 				);
 			} else {
-				App.SlaveAssignment.serveThePublic(S.DJ);
+				App.SlaveAssignment.serveThePublic(dj);
 			}
 		}
 	}
@@ -141,24 +142,23 @@ App.EndWeek.clubReport = function() {
 	}
 
 	if (S.DJ) {
-		const slave = App.SlaveAssignment.reportSlave(S.DJ);
-		tired(slave);
+		tired(dj);
 		/* apply following SA passages to facility leader */
 		if (V.showEWD !== 0) {
 			const DJEntry = App.UI.DOM.appendNewElement("div", el, '', "slave-report");
 			const artSpan = App.UI.DOM.appendNewElement("span", DJEntry);
-			App.SlaveAssignment.appendSlaveLinks(DJEntry, slave);
+			App.SlaveAssignment.appendSlaveLinks(DJEntry, dj);
 			App.Events.addNode(
 				DJEntry,
 				[
-					App.UI.DOM.makeElement("span", SlaveFullName(slave), "slave-name"),
+					App.UI.DOM.makeElement("span", SlaveFullName(dj), "slave-name"),
 					`is performing as the DJ in ${V.clubName}.`,
 				]
 			);
-			DJEntry.append(App.SlaveAssignment.standardSlaveReport(slave, false));
-			App.SlaveAssignment.appendSlaveArt(artSpan, slave);
+			DJEntry.append(App.SlaveAssignment.standardSlaveReport(dj, false));
+			App.SlaveAssignment.appendSlaveArt(artSpan, dj);
 		} else {
-			App.SlaveAssignment.standardSlaveReport(slave, true);
+			App.SlaveAssignment.standardSlaveReport(dj, true);
 		}
 	}
 
diff --git a/src/endWeek/reports/nurseryReport.js b/src/endWeek/reports/nurseryReport.js
index f97a9a47fcdd065ed615e83cdf67db6e19cf30e7..1637a2c615e651c92b1d5d38a4569c1a9e524db9 100644
--- a/src/endWeek/reports/nurseryReport.js
+++ b/src/endWeek/reports/nurseryReport.js
@@ -53,9 +53,9 @@ App.Facilities.Nursery.nurseryReport = function nurseryReport() {
 			r.push(`${SlaveFullName(S.Matron)} is serving as your Matron.`);
 
 			if (S.Matron.relationship === -3 && S.Matron.devotion > 50) {
-				r.push(`${He} does ${his} best to ${V.nurseryChildren ?
-					`properly raise and look after the children in ${V.nurseryName}` :
-					`look after ${V.nurseryName} and keep it tidy and running smoothly`}.`);
+				r.push(`${He} does ${his} best to ${V.nurseryChildren
+					? `properly raise and look after the children in ${V.nurseryName}`
+					: `look after ${V.nurseryName} and keep it tidy and running smoothly`}.`);
 			}
 
 			if (S.Matron.health.condition < 10) {
@@ -114,13 +114,13 @@ App.Facilities.Nursery.nurseryReport = function nurseryReport() {
 		}
 	}
 
-	const matronEffects = App.UI.DOM.appendNewElement("p", frag, '', "indent");
+	const matronEffects = App.UI.DOM.appendNewElement("p", frag, '', ["indent"]);
 
 	matronChanges();
 	$(matronEffects).append(matronText());
 
 	if (slaves) {
-		const intro = App.UI.DOM.appendNewElement("p", frag, '', "indent");
+		const intro = App.UI.DOM.appendNewElement("p", frag, '', ["indent"]);
 
 		let r = [];
 
@@ -207,20 +207,20 @@ App.Facilities.Nursery.nurseryReport = function nurseryReport() {
 				$(slaveEntry).append(`is working out of ${V.nurseryName}.`);
 			}
 
-			const nannyContent = App.UI.DOM.appendNewElement("div", slaveEntry, '', "indent");
+			const nannyContent = App.UI.DOM.appendNewElement("div", slaveEntry, '', ["indent"]);
 
-			$(nannyContent).append(`${He} ${App.SlaveAssignment.nanny(slave, matronBonus)}`);	// FIXME: nanny() takes one argument
+			$(nannyContent).append(`${He} ${App.SlaveAssignment.nanny(slave)}`);
 
 			slaveEntry.append(App.SlaveAssignment.standardSlaveReport(slave, false));
 			App.SlaveAssignment.appendSlaveArt(artSpan, slave);
 		} else {	// silently discard return values
-			App.SlaveAssignment.nanny(slave, matronBonus);	// FIXME: nanny() takes one argument
+			App.SlaveAssignment.nanny(slave);
 			App.SlaveAssignment.standardSlaveReport(slave, true);
 		}
 	}
 
 	if (V.nurseryDecoration !== "standard") {
-		const decorationEffects = App.UI.DOM.appendNewElement("p", frag, '', "indent");
+		const decorationEffects = App.UI.DOM.appendNewElement("p", frag, '', ["indent"]);
 
 		$(decorationEffects).append(`${capFirstChar(V.nurseryName)}'s ${V.nurseryDecoration} atmosphere <span class="devotion inc">has a minor impact on your servants.</span>`);
 	}
diff --git a/src/endWeek/saChoosesOwnClothes.js b/src/endWeek/saChoosesOwnClothes.js
index c17ee47cbc65f2ce97e5a19fee0dbfde1a149362..6bd2d8e4f58fb267b296fd5fa0fe570b85c8d269 100644
--- a/src/endWeek/saChoosesOwnClothes.js
+++ b/src/endWeek/saChoosesOwnClothes.js
@@ -92,7 +92,11 @@ App.SlaveAssignment.choosesOwnClothes = function saChoosesOwnClothes(slave) {
 
 		if (slave.fetish === "mindbroken") {
 			if (V.arcologies[0].FSChattelReligionist > 0) {
-				selection = {text: `${he} commonly sees others wearing chattel habits and is drawn to doing so ${himself}.`, clothes: "a chattel habit"};
+				if (V.arcologies[0].FSChattelReligionistLaw2 === 1) {
+					selection = {text: `${he} sees others wearing nothing at all, and stays nude ${himself}.`, clothes: "no clothing"};
+				} else {
+					selection = {text: `${he} commonly sees others wearing chattel habits and is drawn to doing so ${himself}.`, clothes: "a chattel habit"};
+				}
 			} else {
 				/** @type {string} */
 				let text;
@@ -186,9 +190,7 @@ App.SlaveAssignment.choosesOwnClothes = function saChoosesOwnClothes(slave) {
 			}
 			selection = jsEither(clothing);
 		} else {
-			if (V.arcologies[0].FSChattelReligionist > 0) {
-				clothing.push({text: `and wears a chattel habit to conform to your arcology's culture.`, clothes: "a chattel habit"});
-			} else if (slave.assignment === Job.NURSE) { /* Chooses clothes according to assignment (no exceptions)*/
+			if (slave.assignment === Job.NURSE) { /* Chooses clothes according to assignment (no exceptions)*/
 				if (slave.energy > 95 || slave.need > 100) {
 					wardrobeAssignment.push({text: `and wears a slutty nurse outfit to make it clear just how much this nurse needs ${his} daily lay.`, clothes: "a slutty nurse outfit"});
 				} else if (slave.energy > 80) {
@@ -277,7 +279,9 @@ App.SlaveAssignment.choosesOwnClothes = function saChoosesOwnClothes(slave) {
 				wardrobeAssignment.push({text: `and wears a slutty suit to give ${him} an air of authority while keeping all eyes focused on ${him}.`, clothes: "slutty business attire"});
 				wardrobeAssignment.push({text: `and wears a schoolgirl outfit to help keep ${his} charges focused on ${him}.`, clothes: "a schoolgirl outfit"});
 				wardrobeAssignment.push({text: `and dresses up as a succubus to give ${his} sex lessons an extra kick.`, clothes: "a succubus outfit"});
-				if (isItemAccessible.entry("conservative clothing") === true) {
+				if (slave.race === "middle eastern" && isItemAccessible.entry("a burqa") === true) {
+					wardrobeAssignment.push({text: `and wears a conservative burqa to not detract from this week's lesson.`, clothes: "a burqa"});
+				} else if (isItemAccessible.entry("conservative clothing") === true) {
 					wardrobeAssignment.push({text: `and wears conservative clothes to not detract from this week's lesson.`, clothes: "conservative clothing"});
 				}
 				if (isItemAccessible.entry("a toga") === true) {
@@ -350,7 +354,11 @@ App.SlaveAssignment.choosesOwnClothes = function saChoosesOwnClothes(slave) {
 				}
 				wardrobeAssignment.push({text: `and dons a slutty outfit. If ${his} breasts are going to hang out, might as well wear something to complement them.`, clothes: "a slutty outfit"});
 			} else if (slave.assignment === Job.BODYGUARD) {
-				wardrobeAssignment.push({text: `and wears a bodysuit to show off ${his} curves without hindering ${his} deadliness.`, clothes: "a comfortable bodysuit"});
+				if (isItemAccessible.entry("a tight Imperial bodysuit") && V.arcologies[0].FSNeoImperialist > 0) {
+					wardrobeAssignment.push({text: `and wears a tight Imperial bodysuit to show off ${his} curves without hindering ${his} deadliness.`, clothes: "a tight Imperial bodysuit"});
+				} else {
+					wardrobeAssignment.push({text: `and wears a bodysuit to show off ${his} curves without hindering ${his} deadliness.`, clothes: "a comfortable bodysuit"});
+				}
 				if (isItemAccessible.entry("a military uniform") === true) {
 					wardrobeAssignment.push({text: `and wears a military uniform to look the part of the honor guard.`, clothes: "a military uniform"});
 				}
@@ -661,12 +669,21 @@ App.SlaveAssignment.choosesOwnClothes = function saChoosesOwnClothes(slave) {
 							wardrobeFS.push({text: `and wears one of the beautiful folk costumes of the asian race.`, clothes: "a long qipao"});
 						}
 						if (isItemAccessible.entry("a kimono") === true) {
-							wardrobeAssignment.push({text: `and wears one of the beautiful folk costumes of the asian race.`, clothes: "a kimono"});
+							wardrobeFS.push({text: `and wears one of the beautiful folk costumes of the asian race.`, clothes: "a kimono"});
 						}
 						if (isItemAccessible.entry("a hanbok") === true) {
-							wardrobeAssignment.push({text: `and wears one of the beautiful folk costumes of the asian race.`, clothes: "a hanbok"});
+							wardrobeFS.push({text: `and wears one of the beautiful folk costumes of the asian race.`, clothes: "a hanbok"});
+						}
+					}
+				}
+				if (V.arcologies[0].FSChattelReligionist > 0) {
+					if (V.arcologies[0].FSChattelReligionistLaw2 === 1) {
+						wardrobeFS.push({text: `but chooses to stay nude to promote Holy Nudism.`, clothes: "no clothing"});
+						if (isItemAccessible.entry("body oil") === true) {
+							wardrobeFS.push({text: `and coats ${his} body in oil to highlight what God has given ${him}.`, clothes: "body oil"});
 						}
 					}
+					wardrobeFS.push({text: `and wears a chattel habit to conform to your arcology's culture.`, clothes: "a chattel habit"});
 				}
 
 				if (V.arcologies[0].FSSubjugationist > 0) {
@@ -979,6 +996,17 @@ App.SlaveAssignment.choosesOwnClothes = function saChoosesOwnClothes(slave) {
 					clothing.push(wardrobeTastes[i]);
 				}
 			}
+			if (V.arcologies[0].FSChattelReligionist > 0) {
+				// Chattel religionism is currently the only FS with a hard advancement link to clothing.  Accepting slaves should never voluntarily select an outfit that won't help.
+				clothing.deleteWith(c => !ChattelReligionistClothingPass(c.clothes));
+				if (clothing.length < 1) {
+					if (V.arcologies[0].FSChattelReligionistLaw2 === 1) {
+						clothing.push({text: `but chooses to stay nude to promote Holy Nudism.`, clothes: "no clothing"});
+					} else {
+						clothing.push({text: `and wears a chattel habit to conform to your arcology's culture.`, clothes: "a chattel habit"});
+					}
+				}
+			}
 			selection = jsEither(clothing);
 		}
 
diff --git a/src/endWeek/saLongTermEffects.js b/src/endWeek/saLongTermEffects.js
index df7f37781a6f419e4209dbe7ee519e5a89445d02..9a333ac748d692c17283383fc322e2523a50c620 100644
--- a/src/endWeek/saLongTermEffects.js
+++ b/src/endWeek/saLongTermEffects.js
@@ -922,7 +922,7 @@ App.SlaveAssignment.longTermEffects = function saLongTermEffects(slave) {
 						slave.boobs -= 50 / gigantomastiaMod;
 					}
 					if (slave.geneMods.NCS === 0) {
-						if (slave.clit < 2 && random(1, 100) < 10) {
+						if (slave.clit < 2 && slave.vagina >= 0 && slave.dick === 0 && random(1, 100) < 10) {
 							r.push(`${He} feels <span class="change positive">unusual warmness</span> in ${his} clitoris.`);
 							slave.clit += 1;
 						}
@@ -946,7 +946,7 @@ App.SlaveAssignment.longTermEffects = function saLongTermEffects(slave) {
 							r.push(`${He} feels a <span class="change positive">strange weight</span> on ${his} rear.`);
 							slave.butt += 1;
 						}
-						if (slave.labia < 2 && random(1, 100) < 10) {
+						if (slave.labia < 2 && slave.vagina >= 0 && random(1, 100) < 10) {
 							r.push(`${He} feels an <span class="change positive">unusual tenderness</span> in ${his} labia.`);
 							slave.labia += 1;
 						}
diff --git a/src/endWeek/saPregnancy.js b/src/endWeek/saPregnancy.js
index 1c5e6922879fb6309be0246fc88765ad12334c85..50575bcce006ed35d0b52bafe881383be46730fb 100644
--- a/src/endWeek/saPregnancy.js
+++ b/src/endWeek/saPregnancy.js
@@ -1690,7 +1690,7 @@ App.SlaveAssignment.pregnancy = function saPregnancy(slave) {
 								if (App.Utils.sexAllowed(slave, tempLover)) {
 									pregSource = tempLover.ID;
 								} else if (disobedience(slave) + disobedience(tempLover) + 5 > random(0, 100)) { /* note higher than normal disobedience chance...telling lovers they can't play is just asking for trouble */
-									r.push(`Although sexual contact between them is forbidden, ${slave.slaveName} and ${his} ${relationshipTerm(slave)} ${tempLover.slaveName} took a risk and <span class="trust dec">flaunted the rules.</span>`);
+									r.push(`Although sexual contact between them is forbidden, ${slave.slaveName} and ${his} ${relationshipTerm(slave)} ${tempLover.slaveName} took a risk and <span class="trust dec">flouted the rules.</span>`);
 									slave.trust -= 5;
 									tempLover.trust -= 5;
 									pregSource = tempLover.ID;
diff --git a/src/endWeek/saRecruitGirls.js b/src/endWeek/saRecruitGirls.js
index d3fa389e6b104a298661f9b6eb4ca461000e6593..127a3e11aec34478bdb3f24d094a21d20818a481 100644
--- a/src/endWeek/saRecruitGirls.js
+++ b/src/endWeek/saRecruitGirls.js
@@ -17,7 +17,7 @@ App.SlaveAssignment.recruitGirls = function recruitGirls(slave) {
 	const idleTarget = calcIdleTarget();
 	physicalAdjustments(slave);
 	if (slave.health.tired > 80) {
-		tooTired(slave);
+		tooTired();
 	} else if (V.recruiterTarget === "other arcologies") {
 		influenceNeighbor(slave);
 	} else if (V.slaves.length < idleTarget) {
@@ -72,11 +72,7 @@ App.SlaveAssignment.recruitGirls = function recruitGirls(slave) {
 		tired(slave);
 	}
 
-	/**
-	 * @param {App.Entity.SlaveState} slave
-	 *
-	 */
-	function tooTired(slave) {
+	function tooTired() {
 		r.push(`uses the week to recover from fatigue and`);
 		if (V.recruiterTarget === "other arcologies") {
 			if (targetArcology !== undefined) {
@@ -98,8 +94,7 @@ App.SlaveAssignment.recruitGirls = function recruitGirls(slave) {
 	}
 
 	/**
-	 * @param {App.Entity.SlaveState} slave
-	 *
+	 * @param {FC.ReportSlave} slave
 	 */
 	function influenceNeighbor(slave) {
 		if (targetArcology !== undefined) {
@@ -1413,20 +1408,33 @@ App.SlaveAssignment.recruitGirls = function recruitGirls(slave) {
 		const clothes = App.Data.clothes.get(slave.clothes);
 		if (arcology.FSChattelReligionist !== "unset") {
 			if (totalInt > 15 && (slave.devotion > 95 || slave.trust > 95)) {
-				if (clothes.fs && clothes.fs.loves && clothes.fs.loves.has("FSChattelReligionist")) {
-					pushFS(`Clad in ${his} holy garb, ${slave.slaveName} preaches to the atrium with a powerful appeal to the new morality, in which ${his} absolute faith in your revelations is unmistakable.`);
-					seed += 1;
-				} else if (arcology.FSNeoImperialist !== "unset" && slave.clothes === "a tight Imperial bodysuit") {
-					pushFS(`${He} lectures eloquently on the importance of hierarchy and noble lineage in a pseudo-religious fashion, dressed out in ${his} form-fitting bodysuit; most of the listeners' eyes fall on ${his} tightly-outlined chest and how ${his} nipples protrude obviously underneath the cybersuit, your crest emblazoned over the rock-hard nubs doing more of the arguing.`);
-					seed += 1;
-				} else if (arcology.FSNeoImperialist !== "unset" && slave.clothes === "Imperial Plate") {
-					pushFS(`${He} gives a lengthy speech about the importance of hierarchy and noble lineage in a pseudo-religious fashion, speaking on the divine right of the nobility to rule while dominating the floor in ${his} ultra-heavy Imperial plate.`);
-					seed += 1;
-				} else if (arcology.FSRomanRevivalist !== "unset" && slave.clothes === "a toga") {
-					pushFS(`${He} preaches in the atrium, delivering a powerful and faith-filled appeal in support of the new state religion and its Prophet-Emperor, descendant of the gods.`);
-					seed += 1;
+				if (arcology.FSChattelReligionistLaw2 !== 1) {
+					if (ChattelReligionistClothingPass(slave.clothes)) {
+						pushFS(`Clad in ${his} holy garb, ${slave.slaveName} preaches to the atrium with a powerful appeal to the new morality, in which ${his} absolute faith in your revelations is unmistakable.`);
+						seed += 2;
+					} else if (arcology.FSNeoImperialist !== "unset" && slave.clothes === "a tight Imperial bodysuit") {
+						pushFS(`${He} lectures eloquently on the importance of hierarchy and noble lineage in a pseudo-religious fashion, dressed out in ${his} form-fitting bodysuit; most of the listeners' eyes fall on ${his} tightly-outlined chest and how ${his} nipples protrude obviously underneath the cybersuit, your crest emblazoned over the rock-hard nubs doing more of the arguing.`);
+						seed += 1;
+					} else if (arcology.FSNeoImperialist !== "unset" && slave.clothes === "Imperial Plate") {
+						pushFS(`${He} gives a lengthy speech about the importance of hierarchy and noble lineage in a pseudo-religious fashion, speaking on the divine right of the nobility to rule while dominating the floor in ${his} ultra-heavy Imperial plate.`);
+						seed += 1;
+					} else if (arcology.FSRomanRevivalist !== "unset" && slave.clothes === "a toga") {
+						pushFS(`${He} preaches in the atrium, delivering a powerful and faith-filled appeal in support of the new state religion and its Prophet-Emperor, descendant of the gods.`);
+						seed += 1;
+					} else {
+						pushFS(`${He} heads to the atrium to deliver a powerful, faith-based appeal for everyone to join the new moral order, though one cynical onlooker heckles ${him} about ${his} style of dress.`);
+					}
 				} else {
-					pushFS(`${He} heads to the atrium to deliver a powerful, faith-based appeal for everyone to join the new moral order, though one cynical onlooker heckles ${him} about ${his} style of dress.`);
+					if (clothes.exposure > 3) {
+						pushFS(`${He} preaches to the atrium clad in essentially nothing but what God gave him. ${His} absolute faith in your revelations is unmistakable, and ${he} wins many converts.`);
+						seed += 2;
+					} else if (ChattelReligionistClothingPass(slave.clothes)) {
+						pushFS(`Clad in ${his} holy garb (which leaves ${him} attractively exposed), ${slave.slaveName} preaches to the atrium with a powerful appeal to the new morality, in which ${his} absolute faith in your revelations is unmistakable.`);
+						seed += 1;
+					} else {
+						// no free pass for any other clothing if you're going the Holy Nudist route, sorry
+						pushFS(`${He} heads to the atrium to deliver a powerful, faith-based appeal for everyone to join the new moral order, though ${he} draws chuckles from the crowd when ${he} argues for Holy Nudism while fully clothed.`);
+					}
 				}
 				seed += 1;
 				FSdefend++;
diff --git a/src/endWeek/saServeThePublic.js b/src/endWeek/saServeThePublic.js
index ab9180f36cb3f4ee6618210960c109ccc9f5ba57..7958cd899fcbe907cfb873fd5e9b40d777a897ca 100644
--- a/src/endWeek/saServeThePublic.js
+++ b/src/endWeek/saServeThePublic.js
@@ -1,5 +1,5 @@
 /**
- * @param {App.Entity.SlaveState} slave
+ * @param {FC.ReportSlave} slave
  * @returns {string}
  */
 App.SlaveAssignment.serveThePublic = function saServeThePublic(slave) {
@@ -265,8 +265,7 @@ App.SlaveAssignment.serveThePublic = function saServeThePublic(slave) {
 	}
 
 	/**
-	 * @param {App.Entity.SlaveState} slave
-	 *
+	 * @param {FC.ReportSlave} slave
 	 */
 	function physicalEffects(slave) {
 		if (slave.health.illness > 0 || slave.health.tired > 60) {
diff --git a/src/endWeek/saSocialEffects.js b/src/endWeek/saSocialEffects.js
index 8e9e302993b5e60e35062daa8c74daa067ca5b2e..8b9ec8fe8c2dc2421b74360ee75d2bae5252885b 100644
--- a/src/endWeek/saSocialEffects.js
+++ b/src/endWeek/saSocialEffects.js
@@ -6,7 +6,7 @@ App.SlaveAssignment.saSocialEffects = function(slave) {
 	const {His, his, him, he, girl, wife} = getPronouns(slave);
 
 	/** Build a social effect object
-	 * @param {FC.FutureSocietyDeco} FS
+	 * @param {FC.FutureSocietyDeco|""} FS
 	 * @param {number} magnitude positive or negative value (a small integer, or a fraction between -1 and 1)
 	 * @param {string} shortDesc for compact/list mode (text string)
 	 * @param {string} longDesc for expanded mode (HTML string)
@@ -380,6 +380,13 @@ App.SlaveAssignment.saSocialEffects = function(slave) {
 				t.push(new SocialEffect("Paternalist", 1, "Healthy",
 					`Society <span class="green">approves</span> of ${his} shining health; this advances belief in a slaveowner's duty.`));
 			}
+			if (slave.health.tired > 60 && !slave.slaveUsedRest && ![Job.REST, Job.SPA, Job.CLINIC, Job.CONFINEMENT, Job.CELLBLOCK].includes(slave.assignment)) {
+				t.push(new SocialEffect("Paternalist", -2, "Exhausted and not resting",
+					`Society <span class="red">is appalled</span> that ${he}'s required to work in ${his} exhausted state.`));
+			} else if (slave.health.tired > 70 && slave.assignment === Job.CELLBLOCK && !!S.Wardeness) {
+				t.push(new SocialEffect("Paternalist", -1, "Sleep deprived by Wardeness",
+					`Society <span class="red">disapproves</span> of the harsh measures that ${S.Wardeness.slaveName} is using to break ${him}.`));
+			}
 			if (slave.devotion + slave.trust > 180) {
 				if (slave.relationship === -3) {
 					t.push(new SocialEffect("Paternalist", 5, `Happy slave ${wife}`,
@@ -457,6 +464,10 @@ App.SlaveAssignment.saSocialEffects = function(slave) {
 				t.push(new SocialEffect("Degradationist", 1, `Restrained for sex`,
 					`Society <span class="green">approves</span> of how ${he} is restrained for involuntary use, seeing this as the future of sexual relations.`));
 			}
+			if (slave.health.tired > 60 && !slave.slaveUsedRest && ![Job.REST, Job.SPA, Job.CLINIC, Job.CONFINEMENT, Job.CELLBLOCK].includes(slave.assignment)) {
+				t.push(new SocialEffect("Degradationist", 1, "Exhausted but still working",
+					`Society <span class="green">approves</span> of the harsh discipline required to get ${him} to work productively in ${his} exhausted state.`));
+			}
 			if (modScore.total > 15 || (modScore.piercing > 8 && modScore.tat > 5)) {
 				t.push(new SocialEffect("Degradationist", 1, `Heavily modified`,
 					`Society <span class="green">approves</span> of ${his} many body modifications, which advances the public taste for such degradation of slave bodies.`));
@@ -640,7 +651,7 @@ App.SlaveAssignment.saSocialEffects = function(slave) {
 			}
 			if (slave.faceImplant > 95 && slave.face > 40) {
 				t.push(new SocialEffect("Transformation Fetishist", 1, `Uncannily beautiful face`,
-					`Society <span class="green">approves</span> of ${his} beautiful face, considering it's uncanny nature a boon rather than a fault; this supports the belief that there is no such thing as too much surgery.`));
+					`Society <span class="green">approves</span> of ${his} beautiful face, considering its uncanny nature a boon rather than a fault; this supports the belief that there is no such thing as too much surgery.`));
 				transformed++;
 			}
 			let addons = [];
@@ -849,13 +860,33 @@ App.SlaveAssignment.saSocialEffects = function(slave) {
 					`Society <span class="green">approves</span> of ${slave.slaveName}'s collar as an expression of the old ideal of mortification of the flesh, advancing the combination of religious originalism and modern slavery.`));
 			}
 			const clothes = App.Data.clothes.get(slave.clothes);
-			if (clothes && clothes.fs && clothes.fs.loves && clothes.fs.loves.has("FSChattelReligionist")) {
-				t.push(new SocialEffect("Chattel Religionist", 1, `Religious clothing`,
-					`Society <span class="green">approves</span> of ${his} religiously themed clothing, strengthening the connection between sexual servitude and faith.`));
-			} else if (clothes && clothes.fs && clothes.fs.tolerates && clothes.fs.tolerates.has("FSChattelReligionist")) {
-				t.push(new SocialEffect("Chattel Religionist", 0, `Spartan clothing`,
-					`Society accepts ${his} spartan clothing, seeing it as permissible under the new religious mores.`));
-			} else if (slave.fuckdoll === 0) {
+			let clothesOK = false;
+			if (V.arcologies[0].FSChattelReligionistLaw2 !== 1) {
+				if (ChattelReligionistClothingPass(slave.clothes)) {
+					t.push(new SocialEffect("Chattel Religionist", 1, `Religious clothing`,
+						`Society <span class="green">approves</span> of ${his} religiously themed clothing, strengthening the connection between sexual servitude and faith.`));
+					clothesOK = true;
+				} else if (clothes && clothes.fs && clothes.fs.tolerates && clothes.fs.tolerates.has("FSChattelReligionist")) {
+					t.push(new SocialEffect("Chattel Religionist", 0, `Spartan clothing`,
+						`Society accepts ${his} spartan clothing, seeing it as permissible under the new religious mores.`));
+					clothesOK = true;
+				}
+			} else {
+				if (clothes && clothes.exposure > 3) {
+					t.push(new SocialEffect("Chattel Religionist", 2, `Holy Nudism`,
+						`Society <span class="green">strongly approves</span> of ${his} holy nudism, strengthening the connection between sexual servitude and faith.`));
+					clothesOK = true;
+				} else if (ChattelReligionistClothingPass(slave.clothes)) {
+					t.push(new SocialEffect("Chattel Religionist", 1, `Revealing religious clothing`,
+						`Society <span class="green">approves</span> of ${his} revealing, religiously themed clothing, strengthening the connection between sexual servitude and faith.`));
+					clothesOK = true;
+				} else if (clothes && clothes.fs && clothes.fs.loves && clothes.fs.loves.has("FSChattelReligionist")) {
+					t.push(new SocialEffect("Chattel Religionist", 0, `Conservative religious clothing`,
+						`Society accepts ${his} religiously themed clothing, but finds it insufficiently revealing to promote Holy Nudism.`));
+					clothesOK = true;
+				}
+			}
+			if (!clothesOK && slave.fuckdoll === 0) {
 				t.push(new SocialEffect("Chattel Religionist", -1, `Extravagant clothing`,
 					`Society <span class="red">disapproves</span> of ${his} unnecessarily gaudy attire; this slows acceptance of a link between faith and sexual servitude.`));
 			}
diff --git a/src/endWeek/saTakeClasses.js b/src/endWeek/saTakeClasses.js
index ad1aaa51571b4ce03b438b82e42dda31c60163bf..0ccb8fb435334cbf63b003e1e06e71a24ad874b5 100644
--- a/src/endWeek/saTakeClasses.js
+++ b/src/endWeek/saTakeClasses.js
@@ -10,7 +10,6 @@ App.SlaveAssignment.takeClasses = function saTakeClasses(slave) {
 	let r = ` `;
 
 	let learning = 1;
-	let teaching = 0;
 
 	jobPreface(slave);
 	if (slave.fetish !== "mindbroken") {
@@ -50,7 +49,7 @@ App.SlaveAssignment.takeClasses = function saTakeClasses(slave) {
 			}
 			if (slave.assignment === Job.SCHOOL && S.Schoolteacher) {
 				const schoolteacherPronouns = getPronouns(S.Schoolteacher);
-				teaching = (S.Schoolteacher.intelligence + S.Schoolteacher.intelligenceImplant);
+				let teaching = (S.Schoolteacher.intelligence + S.Schoolteacher.intelligenceImplant);
 				if (S.Schoolteacher.visualAge > 35) {
 					teaching += 10;
 				}
diff --git a/src/endWeek/saWorkTheFarm.js b/src/endWeek/saWorkTheFarm.js
index 1b7056bb3fa932c7cc3afa771346a6779b6a2940..7f0e5c358a8e302c6b56f24e07e82c1274fb4a29 100644
--- a/src/endWeek/saWorkTheFarm.js
+++ b/src/endWeek/saWorkTheFarm.js
@@ -43,15 +43,6 @@ App.SlaveAssignment.workTheFarm = function(slave) {
 		return text.toChildren();
 	}
 
-	// function farmer(slave) {
-	// TODO: update this with devotion and health effects
-	// 	const F = getPronouns(S.Farmer);
-
-	// 	if (S.Farmer) {
-	// 		return `${S.Farmer.slaveName} watches over ${him}, making sure that ${he} doesn't slack off and works as hard as ${he} should. ${F.He}'s a tough boss, but a fair one. ${slave.slaveName} benefits from ${F.his} care while working in ${V.farmyardName}.`;
-	// 	}
-	// }
-
 	function food() {
 		if (V.mods.food.market && V.farmyardShows < 2) {
 			const fsGain = 0.0001 * foodAmount;
@@ -90,7 +81,6 @@ App.SlaveAssignment.workTheFarm = function(slave) {
 				.filter(f => f.dick.size > 3),
 		];
 
-		// TODO: rewrite these
 		if (V.farmyardShows > 0) {
 			if (V.seeBestiality) {
 				if (slave.sexualQuirk !== "size queen" && random(100) > 95 && largeAnimals.length > 0) {
@@ -110,7 +100,7 @@ App.SlaveAssignment.workTheFarm = function(slave) {
 						slave.devotion += 5;
 						fetishChange(slave, Fetish.BESTIALITY);
 
-						return `${He} seems to have <span class="devotion inc">really taken to</span> getting fucked by animals – <span class="fetish gain">${he} has a bestiality fetish!</span>`;
+						return `${He} seems to have <span class="devotion inc">really taken to</span> getting fucked by animals <span class="fetish gain">– ${he} has a bestiality fetish!</span>`;
 					}
 				} else if (slave.energy > 95) {
 					slave.need = 0;
@@ -133,12 +123,12 @@ App.SlaveAssignment.workTheFarm = function(slave) {
 
 		text.push(`All said and done,`);
 
-		if (V.mods.food.market && V.farmyardShows < 2) {
+		if (foodAmount) {
 			text.push(`${he} produces <span class="chocolate">${massFormat(foodAmount)}</span> of food`);
 		}
 
 		if (V.farmyardShows > 0) {
-			if (V.mods.food.market) {
+			if (foodAmount) {
 				text.push(`and`);
 			} else {
 				text.push(`${he}`);
diff --git a/src/events/RE/rePregInventorShowOff.js b/src/events/RE/rePregInventorShowOff.js
index 253d4c39e3455a8687d8e09d01dedb1b085f1152..eae35d4fb198ab05c18c841426e285f1c88265b8 100644
--- a/src/events/RE/rePregInventorShowOff.js
+++ b/src/events/RE/rePregInventorShowOff.js
@@ -140,7 +140,12 @@ App.Events.rePregInventorShowOff = class rePregInventorShowOff extends App.Event
 			} else if (V.arcologies[0].FSHedonisticDecadence > 60) {
 				r.push(`surprisingly strong, given how plush they are, and well suited for their job,`);
 			} else if (V.arcologies[0].FSChattelReligionist > 60) {
-				r.push(`dressed in skimpy monks habits and eyes flashing with exalted fervor as they go about their duties,`);
+				if (V.arcologies[0].FSChattelReligionistLaw2 === 0) {
+					r.push(`dressed in skimpy monks habits`);
+				} else {
+					r.push(`completely nude`);
+				}
+				r.push(`and eyes flashing with exalted fervor as they go about their duties,`);
 			} else if (V.arcologies[0].FSYouthPreferentialist > 60) {
 				r.push(`just barely the legal age for consent in your arcology and clearly eager to prove themselves,`);
 			} else if (V.arcologies[0].FSMaturityPreferentialist > 60) {
diff --git a/src/events/RE/reRoyalBlood.js b/src/events/RE/reRoyalBlood.js
index 8ceca921623800fd1ea4fd83389968a5fe8f92a3..1ff12f942f648359607471fec704fe04334019fd 100644
--- a/src/events/RE/reRoyalBlood.js
+++ b/src/events/RE/reRoyalBlood.js
@@ -394,7 +394,6 @@ App.Events.RERoyalBlood = class RERoyalBlood extends App.Events.BaseEvent {
 				// Queen
 				repX(-queenSF, "event", queen);
 			}
-			newSlave(queen); // skip New Slave Intro
 
 			text.append(App.UI.newSlaveIntro(queen));
 
diff --git a/src/events/RESS/nightVisit.js b/src/events/RESS/nightVisit.js
index 3563be9daa7bb4446d7c0052ee7774a884dca64b..8bdb01c4585b1e3079d7bfeebbc3af11597f0168 100644
--- a/src/events/RESS/nightVisit.js
+++ b/src/events/RESS/nightVisit.js
@@ -140,7 +140,7 @@ App.Events.RESSNightVisit = class RESSNightVisit extends App.Events.BaseEvent {
 			if (((eventSlave.fetish === Fetish.SUBMISSIVE && (eventSlave.fetishStrength > 60 || eventSlave.energy > 95))) && (eventSlave.fetishKnown === 1)) {	// TODO: .energy should behave differently
 				r.push(`${He}'s such a submissive that after a while pleasure overwhelms pain to the extent that ${he} manages a <span class="devotion inc">sobbing orgasm.</span>`);
 			} else {
-				r.push(`${He} gets the message: ${he}'s your property and ${his} desires are entirely subject to your will. ${His} <span class="devotion inc">submission</span> to you and <span class="trust inc">fear of you</span> have both increased.`);
+				r.push(`${He} gets the message: ${he}'s your property and ${his} desires are entirely subject to your will. ${His} <span class="devotion inc">submission</span> to you and <span class="trust dec">fear of you</span> have both increased.`);
 				eventSlave.trust -= 3;
 			}
 			eventSlave.devotion += 3;
@@ -167,7 +167,7 @@ App.Events.RESSNightVisit = class RESSNightVisit extends App.Events.BaseEvent {
 			if (((eventSlave.fetish === "buttslut" && eventSlave.fetishStrength > 60) || (eventSlave.energy > 95)) && (eventSlave.fetishKnown === 1)) {
 				r.push(`${He} loves anal so much that after a while pleasure overwhelms pain to the extent that ${he} manages a <span class="devotion inc">sobbing orgasm.</span>`);
 			} else {
-				r.push(`${He} gets the message: ${he}'s your property and ${his} desires are entirely subject to your will. ${His} <span class="devotion inc">submission</span> to you and <span class="trust inc">fear of you</span> have both increased.`);
+				r.push(`${He} gets the message: ${he}'s your property and ${his} desires are entirely subject to your will. ${His} <span class="devotion inc">submission</span> to you and <span class="trust dec">fear of you</span> have both increased.`);
 				eventSlave.trust -= 3;
 			}
 			eventSlave.devotion += 3;
diff --git a/src/events/RESS/review/backStretch.js b/src/events/RESS/review/backStretch.js
index 653d133de17d14071dfd2c11aa03fb635de0099a..57f68738394e770e983e835a4d90dac7d75a728f 100644
--- a/src/events/RESS/review/backStretch.js
+++ b/src/events/RESS/review/backStretch.js
@@ -41,7 +41,7 @@ App.Events.RESSBackStretch = class RESSBackStretch extends App.Events.BaseEvent
 		} else if (eventSlave.relationship >= 4) {
 			const relation = getSlave(eventSlave.relationshipTarget);
 			const {his2, girl2, wife2} = getPronouns(relation).appendSuffix("2");
-			r.push(`climbed out of bed. ${eventSlave.slaveName}'s`);
+			r.push(`climbed out of bed. (${eventSlave.slaveName}'s`);
 			if (eventSlave.relationship === 5) {
 				r.push(wife2);
 			} else {
diff --git a/src/events/RESS/review/cumslutWhore.js b/src/events/RESS/review/cumslutWhore.js
index 84520762437fe2891bb9e4a0352cde931147560c..f6386725626f2a96ff03243b7a5883e550b45cd1 100644
--- a/src/events/RESS/review/cumslutWhore.js
+++ b/src/events/RESS/review/cumslutWhore.js
@@ -119,9 +119,11 @@ App.Events.RESSCumslutWhore = class RESSCumslutWhore extends App.Events.BaseEven
 			}
 			r.push(`of the stuff hitting ${his}`);
 			if (V.PC.balls >= 10) {
-				r.push(`mouth, even as your load keeps flowing into ${his} gullet`);
+				r.push(`mouth, even as your load keeps flowing into ${his}`);
 				if (V.PC.balls >= 30) {
-					r.push(`steadily bloated the poor ${girl}`);
+					r.push(`gullet, steadily bloating the poor ${girl}.`);
+				} else {
+					r.push(`gullet.`);
 				}
 			} else {
 				r.push(`mouth.`);
diff --git a/src/events/RESS/review/devotedExhibition.js b/src/events/RESS/review/devotedExhibition.js
index 3c9b994022c923f7d11199a39d15fdf07ed9d37f..3b9c9f8b8d6953e22053429c0f6343514016e9cb 100644
--- a/src/events/RESS/review/devotedExhibition.js
+++ b/src/events/RESS/review/devotedExhibition.js
@@ -234,7 +234,7 @@ App.Events.RESSDevotedExhibition = class RESSDevotedExhibition extends App.Event
 				}
 				r.push(`and then pull ${his} legs as wide as they'll go as you fuck ${him}, displaying everything to the whole balcony`);
 				if (eventSlave.belly >= 120000) {
-					r.addToLast(`; ${his} _belly stomach hangs so low that it blocks the view, however`);
+					r.addToLast(`; ${his} ${belly} stomach hangs so low that it blocks the view, however`);
 				} else {
 					if (V.PC.vagina !== -1) {
 						if (V.PC.dick !== 0) {
diff --git a/src/events/RESS/review/inconvenientLabia.js b/src/events/RESS/review/inconvenientLabia.js
index 8cad0b2ad6bcdaded0c1fa7b8d7c55d3cb6da1cc..9dc08a5335534b8b5e0039dfb7f6b571ef1c4df7 100644
--- a/src/events/RESS/review/inconvenientLabia.js
+++ b/src/events/RESS/review/inconvenientLabia.js
@@ -52,7 +52,7 @@ App.Events.RESSInconvenientLabia = class RESSInconvenientLabia extends App.Event
 				r.push(`${He} lisps through ${his} huge piercings,`);
 			}
 			r.push(
-				Spoken(eventSlave, `"${Master}, my pussylips are really big. They make running on the treadmill really painful, even wearing my compression shorts"`),
+				Spoken(eventSlave, `"${Master}, my pussylips are really big. They make running on the treadmill really painful, even wearing my compression shorts,"`),
 				`${he} explains.`,
 				Spoken(eventSlave, `"They just kind of get in the way."`)
 			);
diff --git a/src/events/RETS/reCockmilkInterception.js b/src/events/RETS/reCockmilkInterception.js
index e704283d4f8e65a10e9327208b6b537bf84f39f9..9839155f4cd4547679aa1d9d58f078c96bf71920 100644
--- a/src/events/RETS/reCockmilkInterception.js
+++ b/src/events/RETS/reCockmilkInterception.js
@@ -637,7 +637,7 @@ App.Events.RETSCockmilkInterception = class RETSCockmilkInterception extends App
 					} else {
 						t.push(`cups your`);
 						if (V.PC.balls >= 30) {
-							t.push(`monstrous balls`);
+							t.push(`monstrous`);
 						} else if (V.PC.balls >= 14) {
 							t.push(`hand-filling`);
 						} else if (V.PC.balls >= 9) {
@@ -653,7 +653,7 @@ App.Events.RETSCockmilkInterception = class RETSCockmilkInterception extends App
 						t.push(`your pussy without any hands.`);
 					} else {
 						if (V.PC.balls >= 30) {
-							t.push(`monstrous balls`);
+							t.push(`monstrous`);
 						} else if (V.PC.balls >= 14) {
 							t.push(`hand-filling`);
 						} else if (V.PC.balls >= 9) {
diff --git a/src/events/assistant/assistantFS.js b/src/events/assistant/assistantFS.js
index 2e5caa9ccaa215605ed274405bac1d4df72831fc..66e26ceb7213d4804546035dce257cdc2868feaa 100644
--- a/src/events/assistant/assistantFS.js
+++ b/src/events/assistant/assistantFS.js
@@ -234,7 +234,11 @@ App.Events.assistantFS = class assistantFS extends App.Events.BaseEvent {
 				} else if (V.arcologies[0].FSStatuesqueGlorification !== "unset") {
 					r.push(`adjusts ${hisA} height to conform with your vision of a society glorifying the tall.`);
 				} else if (V.arcologies[0].FSChattelReligionist !== "unset") {
-					r.push(`adjusts ${hisA} outfit to resemble a crusader of your new religion.`);
+					if (V.arcologies[0].FSChattelReligionistLaw2 === 1) {
+						r.push(`adjusts ${hisA} appearance to include a holy symbol painted onto ${hisA} nude body.`);
+					} else {
+						r.push(`adjusts ${hisA} outfit to resemble a crusader of your new religion.`);
+					}
 				} else if (V.arcologies[0].FSRomanRevivalist !== "unset") {
 					r.push(`adjusts ${hisA} outfit to resemble a Roman warrior to conform with your vision of building a new Rome.`);
 				} else if (V.arcologies[0].FSNeoImperialist !== "unset") {
@@ -350,7 +354,7 @@ App.Events.assistantFS = class assistantFS extends App.Events.BaseEvent {
 				} else if (V.arcologies[0].FSStatuesqueGlorification !== "unset") {
 					r.push(`adjusts ${hisA} height to conform with your vision of a society glorifying the tall.`);
 				} else if (V.arcologies[0].FSChattelReligionist !== "unset") {
-					r.push(`adjusts ${hisA} outfit to prominently display a religious symbol of your new religion.`);
+					r.push(`adjusts ${hisA} outfit to resemble the revealing habit of your new religion in a beautiful gold and white color scheme.`);
 				} else if (V.arcologies[0].FSRomanRevivalist !== "unset") {
 					r.push(`adjusts ${hisA} outfit to resemble a respectable Roman ${girlA} to conform with your vision of building a new Rome.`);
 				} else if (V.arcologies[0].FSNeoImperialist !== "unset") {
@@ -411,7 +415,7 @@ App.Events.assistantFS = class assistantFS extends App.Events.BaseEvent {
 				} else if (V.arcologies[0].FSStatuesqueGlorification !== "unset") {
 					r.push(`adjusts ${hisA} height to conform with your vision of a society glorifying the tall.`);
 				} else if (V.arcologies[0].FSChattelReligionist !== "unset") {
-					r.push(`adjusts ${hisA} outfit to prominently display a religious symbol of your new religion.`);
+					r.push(`adjusts ${hisA} outfit to resemble the revealing habit of your new religion in a beautiful gold and white color scheme.`);
 				} else if (V.arcologies[0].FSRomanRevivalist !== "unset") {
 					r.push(`adjusts ${hisA} outfit to resemble a Roman ${girlA} to conform with your vision of building a new Rome.`);
 				} else if (V.arcologies[0].FSNeoImperialist !== "unset") {
diff --git a/src/events/intro/initNationalities.js b/src/events/intro/initNationalities.js
index a4005c1d1bddc65b3c0c9ed5a8a3ac3c7108f8f3..213a1bdf0c6fa63dd90ca00c50b2ceb5a4b8c7ac 100644
--- a/src/events/intro/initNationalities.js
+++ b/src/events/intro/initNationalities.js
@@ -341,6 +341,7 @@ App.Intro.initNationalities = function() {
 		V.arcologies[0].FSPhysicalIdealistLaw = 0;
 		V.arcologies[0].FSPhysicalIdealistStrongFat = 0;
 		V.arcologies[0].FSChattelReligionistLaw = 0;
+		V.arcologies[0].FSChattelReligionistLaw2 = 0;
 		V.arcologies[0].FSChattelReligionistSMR = 0;
 		V.arcologies[0].FSChattelReligionistCreed = 0;
 		V.arcologies[0].FSRomanRevivalistLaw = 0;
diff --git a/src/events/intro/pcAppearance.js b/src/events/intro/pcAppearance.js
index f7966826f1a6c0f07c9f75058acb7035e4fecf54..b8b04b9e38e7d25d93a32790fb13e46f05d391da 100644
--- a/src/events/intro/pcAppearance.js
+++ b/src/events/intro/pcAppearance.js
@@ -28,7 +28,7 @@ App.UI.Player.appearance = function(options, summary = false) {
 	option = options.addCustomOption()
 		.addButton(
 			"Make average",
-			() => resyncSlaveHight(V.PC),
+			() => resyncSlaveHeight(V.PC),
 			""
 		);
 
diff --git a/src/events/nonRandom/pRaped.js b/src/events/nonRandom/pRaped.js
index 9944294ed0282fe4b8e949b0894efa3e6a079922..15306612139c985beeeb398ad69437f08f0e225c 100644
--- a/src/events/nonRandom/pRaped.js
+++ b/src/events/nonRandom/pRaped.js
@@ -494,7 +494,7 @@ App.Events.pRaped = class pRaped extends App.Events.BaseEvent {
 					}
 					if (V.PC.balls >= 9) {
 						r.push(`It's impossible to hide the two firm globes beneath your dick, so you can only wince as ${he} reaches a little lower.`);
-						r.push(Spoken(rapist, `"Did not expect them to be so, profound... Compensating for all the years you weren't allowed to use them?"`));
+						r.push(Spoken(rapist, `"Did not expect them to be so... profound. Compensating for all the years you weren't allowed to use them?"`));
 						r.push(`${He} ${say}s excitedly, rubbing your sizeable balls while licking ${his} lips.`);
 					} else if (V.PC.balls >= 5) {
 						r.push(`${He} no doubt noticed your bulge as ${he} reaches a little lower.`);
diff --git a/src/events/recFS/recfsChattelReligionist.js b/src/events/recFS/recfsChattelReligionist.js
index 1fffa066d8b57294d5b1451231dc4a4789ea9f97..ed074148f9c96dd53d52a73a303d0fdc00754772 100644
--- a/src/events/recFS/recfsChattelReligionist.js
+++ b/src/events/recFS/recfsChattelReligionist.js
@@ -19,7 +19,7 @@ App.Events.recFSChattelReligionist = class recFSChattelReligionist extends App.E
 
 		const {
 			He,
-			his, he, him, himself, girl
+			his, he, him, himself, girl, woman
 		} = getPronouns(slave);
 		const {HeA} = getPronouns(assistant.pronouns().main).appendSuffix("A");
 		const contractCost = 1000;
@@ -49,7 +49,7 @@ App.Events.recFSChattelReligionist = class recFSChattelReligionist extends App.E
 		function enslave() {
 			const frag = new DocumentFragment();
 			r = [];
-			r.push(`${He} lets out a convulsive sob when you accept ${his} servitude, and is painfully obsequious as you complete the formalities of enslavement. Your exam reveals several minor indications of self-harm — chewed nails, bitten lips, and such. But for all that, a remarkable look of peace has settled on the poor woman's face. ${He} waits patiently for a hint of your will,`);
+			r.push(`${He} lets out a convulsive sob when you accept ${his} servitude, and is painfully obsequious as you complete the formalities of enslavement. Your exam reveals several minor indications of self-harm — chewed nails, bitten lips, and such. But for all that, a remarkable look of peace has settled on the poor ${woman}'s face. ${He} waits patiently for a hint of your will,`);
 			if (canAchieveErection(slave)) {
 				r.push(`${his} cock painfully erect`);
 			} else if (slave.dick > 0) {
diff --git a/src/events/scheduled/pitFight.js b/src/events/scheduled/pitFight.js
index 083ec009eb4872fb582281a9e4b2cf4d8ac2c56c..e8675c43d9a40a1230886706be4df1913461466c 100644
--- a/src/events/scheduled/pitFight.js
+++ b/src/events/scheduled/pitFight.js
@@ -77,7 +77,10 @@ App.Events.SEPitFight = class SEPitFight extends App.Events.BaseEvent {
 			}
 
 			function getAnimalFight() {
-				if (!V.active.canine && !V.active.hooved && !V.active.feline) { return getSlavesFight(); }
+				if ((!V.active.canine && !V.active.hooved && !V.active.feline) ||
+					((!V.active.canine && !V.active.hooved && V.active.feline && getAnimal(V.active.feline).species === "cat"))) {
+					return getSlavesFight();
+				}
 				const fighter = available.pluck();
 				V.pit.slaveFightingAnimal = fighter;
 
diff --git a/src/events/scheduled/seFctvWatch.js b/src/events/scheduled/seFctvWatch.js
index 4ac7c13910194d7df7706f388c7ed1d29defc6cc..f2e9fe824f237b69c388ae8167172125af1c5148 100644
--- a/src/events/scheduled/seFctvWatch.js
+++ b/src/events/scheduled/seFctvWatch.js
@@ -247,9 +247,9 @@ App.Events.SEfctvWatch = class SEfctvWatch extends App.Events.BaseEvent {
 			 * @returns {Node}
 			 */
 			function channelFailed(text) {
-				const frag = new DocumentFragment;
+				const frag = new DocumentFragment();
 				frag.append(`A notification is shown: `);
-				App.UI.DOM.appendNewElement("span", frag, text, "note");
+				App.UI.DOM.appendNewElement("span", frag, text, ["note"]);
 				frag.append(`, changing program.`);
 				return frag;
 			}
diff --git a/src/events/scheduled/sePlayerBirth.js b/src/events/scheduled/sePlayerBirth.js
index a4f3f5dd4a3c23b9d8d941f437a7f86040894e63..2ab4b6afa016c7c5e67aa0e9616b0beb93442bee 100644
--- a/src/events/scheduled/sePlayerBirth.js
+++ b/src/events/scheduled/sePlayerBirth.js
@@ -950,7 +950,7 @@ App.Events.SEPlayerBirth = class SEPlayerBirth extends App.Events.BaseEvent {
 
 
 				if (V.PC.pregSource > 0 && curBabies > 0) {
-					let pb = findFather(V.PC.pregSource);
+					const pb = findFather(V.PC.pregSource);
 					if (pb) {
 						if (V.arcologies[0].FSRestartDecoration === 100 && V.eugenicsFullControl !== 1) {
 							r.push(`Word spreads fast through your peers that you gave birth to`);
@@ -965,13 +965,7 @@ App.Events.SEPlayerBirth = class SEPlayerBirth extends App.Events.BaseEvent {
 							r.push(`Rumors spread that The Prophet gave birth to a slave's ${(curBabies > 1) ? "children" : "child"}.`);
 							if (V.arcologies[0].FSSupremacist !== "unset") {
 								if (pb.race !== V.arcologies[0].FSSupremacistRace) {
-									r.push(`Word is that your child`);
-									if (curBabies > 1) {
-										r.push(`ren were`);
-									} else {
-										r.push(`was`);
-									}
-									r.push(`not ${V.arcologies[0].FSSupremacistRace}. As The Prophet saw fit to bear such a child, society views it as a sign to <span class="red">reject ${V.arcologies[0].FSSupremacistRace} supremacy.</span>`);
+									r.push(`Word is that your child${curBabies > 1? `ren were` : `was`} not ${V.arcologies[0].FSSupremacistRace}. As The Prophet saw fit to bear such a child, society views it as a sign to <span class="red">reject ${V.arcologies[0].FSSupremacistRace} supremacy.</span>`);
 									V.arcologies[0].FSSupremacist -= 120;
 								}
 							}
@@ -982,23 +976,11 @@ App.Events.SEPlayerBirth = class SEPlayerBirth extends App.Events.BaseEvent {
 								}
 							}
 						} else {
-							r.push(`Rumors spread that your child`);
-							if (curBabies > 1) {
-								r.push(`ren were`);
-							} else {
-								r.push(`was`);
-							}
-							r.push(`fathered by a slave, <span class="red">harming your lasting reputation.</span>`);
+							r.push(`Rumors spread that your child${curBabies > 1? `ren were` : `was`} fathered by a slave, <span class="red">harming your lasting reputation.</span>`);
 							V.PC.degeneracy += 20;
 							if (V.arcologies[0].FSSupremacist !== "unset") {
 								if (pb.race !== V.arcologies[0].FSSupremacistRace) {
-									r.push(`Furthermore, word is that your child`);
-									if (curBabies > 1) {
-										r.push(`ren were`);
-									} else {
-										r.push(`was`);
-									}
-									r.push(`not ${V.arcologies[0].FSSupremacistRace}, <span class="red">further hurting your lasting reputation.</span>`);
+									r.push(`Furthermore, word is that your child${curBabies > 1? `ren were` : `was`} not ${V.arcologies[0].FSSupremacistRace}, <span class="red">further hurting your lasting reputation.</span>`);
 									V.PC.degeneracy += 10;
 								}
 							}
diff --git a/src/facilities/farmyard/shows/farmShowsIncome.js b/src/facilities/farmyard/shows/farmShowsIncome.js
index b4a11f8c303b0017eeb138e5f9170e507ae0c755..6a4ec09af5b61c355d077ffe7e5ed6b3cee1cb3e 100644
--- a/src/facilities/farmyard/shows/farmShowsIncome.js
+++ b/src/facilities/farmyard/shows/farmShowsIncome.js
@@ -10,7 +10,7 @@ App.Facilities.Farmyard.farmShowsIncome = function(slave) {
 	const behavioralQuirks = ["sinful"];
 	const fetishes = ["humiliation", "masochist"];
 
-	let cash = 25;
+	let cash = 20;
 
 	if (!slave) {
 		return null;
@@ -122,18 +122,22 @@ App.Facilities.Farmyard.farmShowsIncome = function(slave) {
 
 		if (arcology.FSPaternalist !== "unset") {
 			if (V.seeBestiality) {
-				if (!V.policies.bestialityOpenness) {
+				if (V.policies.bestialityOpenness) {
+					if (slave.devotion > 50) {
+						cash *= 1.25;
+					}
+				} else {
 					if (V.farmyardBreeding) {
 						if (V.farmyardRestraints) {
-							cash *= 0.5;
+							cash *= 0.25;
 						} else {
-							cash *= 0.7;
+							cash *= 0.5;
 						}
 					} else {
 						if (V.farmyardRestraints) {
-							cash *= 0.8;
+							cash *= 0.5;
 						} else {
-							cash *= 0.9;
+							cash *= 0.75;
 						}
 					}
 				}
diff --git a/src/facilities/farmyard/shows/saFarmyardShows.js b/src/facilities/farmyard/shows/saFarmyardShows.js
index 99d5431d120ea3503f8dcdf387774b4a8ae949eb..4fe5910d4bbdec90ad356b34a822e34838a1795e 100644
--- a/src/facilities/farmyard/shows/saFarmyardShows.js
+++ b/src/facilities/farmyard/shows/saFarmyardShows.js
@@ -131,6 +131,9 @@ App.Facilities.Farmyard.putOnShows = function(slave) {
 			if (V.seeBestiality) {
 				if (V.policies.bestialityOpenness) {
 					text.push(`Your citizens would normally disapprove of your using slaves as toys for your animals, but the policy you enacted encouraging bestiality, combined with some clever, subtle advertising, leads them to see nothing wrong with it.`);
+					if (slave.devotion > 50) {
+						text.push(`That ${slave.slaveName} seems to be enjoying ${him}self so thoroughly also <span class="reputation inc">helps put their minds at ease.</span>`);
+					}
 				} else {
 					if (V.farmyardBreeding) {
 						if (V.farmyardRestraints) {
@@ -409,7 +412,7 @@ App.Facilities.Farmyard.putOnShows = function(slave) {
 					if (slave.fetishKnown) {
 						return `${He} is so submissive that ${he} willingly accepts ${his} position as an animal's fucktoy and <span class="reputation inc">is able to put on a decent show.</span>`;
 					} else {
-						return `${S.HeadGirl ? `${S.HeadGirl.slaveName} notices` : `You notice`} that ${slave.slaveName} seems to have really taken to ${his} position as a fucktoy for animals. <span class="lightcoral">${He}'s a submissive!</span>`;
+						return `${S.HeadGirl ? `${S.HeadGirl.slaveName} notices` : `You notice`} that ${slave.slaveName} seems to really have taken to ${his} position as a fucktoy for animals. <span class="lightcoral">${He}'s a submissive!</span>`;
 					}
 				} else {
 					if (slave.fetishKnown) {
@@ -465,7 +468,7 @@ App.Facilities.Farmyard.putOnShows = function(slave) {
 	}
 
 	function rival() {
-		if (slave.rivalry > 0 && V.seeBestiality) {
+		if (slave.rivalry > 0 && V.seeBestiality && V.farmyardShows !== 0) {
 			return `${getSlave(slave.rivalryTarget).slaveName} hates ${him} and is glad to see that ${he}'s been assigned to fuck animals all day.`;
 		}
 	}
diff --git a/src/facilities/nursery/utils/nurseryUtils.js b/src/facilities/nursery/utils/nurseryUtils.js
index dad2b09614e2568e4f43c62d3b4ff6bbef1f2eaf..a20c9642ca8fba1452efe133def4dbc2a84a9722 100644
--- a/src/facilities/nursery/utils/nurseryUtils.js
+++ b/src/facilities/nursery/utils/nurseryUtils.js
@@ -707,8 +707,7 @@ App.Facilities.Nursery.nurserySort = function nurserySort() {
 
 	r += `<div id="ql-nursery">`;
 
-	for (let i = 0; i < SL; i++) {
-		const slave = V.slaves[i];
+	for (const slave of V.slaves) {
 		const {His, his} = getPronouns(slave);
 
 		if (slave.preg > 0 && !slave.broodmother && slave.pregKnown && slave.eggType === "human") {
diff --git a/src/facilities/penthouse/managePenthouse.js b/src/facilities/penthouse/managePenthouse.js
index 6af54c4b0885ac634bb94035a0acf467180de4fe..15ff5968be7c5136db8d090faf2e2b1c37fa7f13 100644
--- a/src/facilities/penthouse/managePenthouse.js
+++ b/src/facilities/penthouse/managePenthouse.js
@@ -34,7 +34,7 @@ App.UI.managePenthouse = function() {
 				)
 			);
 		} else if (V.SF.FS.Tension > 100) {
-			App.UI.DOM.appendNewElement("div", el, App.Mods.SF.fsIntegration.badOutcomeFirebase());
+			App.UI.DOM.appendNewElement("div", el, App.Mods.SF.fsIntegration.crisis()[0]);
 		}
 		return el;
 	}
diff --git a/src/futureSocieties/futureSociety.js b/src/futureSocieties/futureSociety.js
index a6245aa4d737ae9bc05f36cefe8b1f83065ea8fa..ac1d705d18aaa75f5a8329f844ec1c08593183d4 100644
--- a/src/futureSocieties/futureSociety.js
+++ b/src/futureSocieties/futureSociety.js
@@ -313,6 +313,7 @@ globalThis.FutureSocieties = (function() {
 				break;
 			case "FSChattelReligionist":
 				arcology.FSChattelReligionistLaw = 0;
+				arcology.FSChattelReligionistLaw2 = 0;
 				arcology.FSChattelReligionistSMR = 0;
 				arcology.FSChattelReligionistCreed = 0;
 				if (_.get(V, "SecExp.edicts")) {
diff --git a/src/gui/Encyclopedia/enclyopediaSlaveModification.js b/src/gui/Encyclopedia/enclyopediaSlaveModification.js
new file mode 100644
index 0000000000000000000000000000000000000000..0a7507548a3b70be022a4a8a0bf6924d9e7b2baa
--- /dev/null
+++ b/src/gui/Encyclopedia/enclyopediaSlaveModification.js
@@ -0,0 +1,49 @@
+App.Encyclopedia.addArticle("Slave Modification", function() {
+ const t = new DocumentFragment();
+ const r = new SpacedTextAccumulator(t);
+ r.push("What would a slaveowner be without the ability to customize their slaves' bodies?");
+ r.push("The Free Cities offer a variety of ways to achieve this for an arcology owner.");
+ r.push("Choose a more particular entry below:");
+ r.toNode("div");
+ return t;
+}, "slaveModification");
+
+App.Encyclopedia.addArticle("Corrective Diet", function() {
+ return App.UI.DOM.makeElement("div", "Using the upgraded kitchen to monitor a slave's caloric intake allows for diets to be tailored to slowly increase or decrease their weight without them realizing.");
+}, "slaveModification");
+
+App.Encyclopedia.addArticle("Nipple Conversion — Penetratable", function() {
+	const t = new DocumentFragment();
+ const r = new SpacedTextAccumulator(t);
+ r.push("By taking extremely large nipples and inverting them into an adequately sized breast, it is possible to use an advanced surgical suite to create a cavity suitable for penetration.");
+ r.push("Early attempts found that the novelty of fucking a tit did not offset the discomfort of ramming one's dick into a solid object and as such, the surgery is only applicable to slaves with at least 500ccs of breast tissue per boob.");
+ r.push("Milk production is unhindered by the alterations, though non-machine milking is far more difficult without a nipple to grab and it is unlikely to be able to properly nourish a child.");
+ r.push("Arousal is also expressed differently, as the nipple cannot stiffen any longer; instead, engorgement causes the newly crafted passage to tighten, adding to the pleasure of using the unorthodox hole.");
+ r.push("While looseness is no issue, and the orifice quite capable of stretching around an intruding shaft, depth can become a problem; even the most average of slaveowners will find themselves bottoming out far sooner than they would like.");
+ r.push("Fortunately, this downside is offset by the novelty of the act and the capacity to push the nipple itself deeper into the slave's breast to better accommodate one's cock.");
+ r.push("In this case, bigger really is better.");
+ r.toNode("div");
+	return t;
+}, "slaveModification");
+
+App.Encyclopedia.addArticle("Ejaculation Boosting Prostate Implant", function() {
+	const t = new DocumentFragment();
+ const r = new SpacedTextAccumulator(t);
+ r.push("An additional prostate implant designed to hyperstimulate one's prostate and store the resulting fluid for release during ejaculation in a specialized reservoir."); 
+ r.push("An easy way to tell if the precum soaked slave you are fucking is sporting this implant is the distinct swelling in her lower belly as she nears release.");
+ r.push("Due to the sheer amount of prostate fluid released, sperm per volume is greatly reduced, devastating profits of those looking to sell cum.");
+ r.push("Remember to keep your slaves well hydrated!");
+ r.toNode("div");
+	return t;
+}, "slaveModification");
+
+App.Encyclopedia.addCategory("slaveModification", function() {
+	const links = [];
+ if (V.encyclopedia !== "Slave Modification") {
+  links.push(App.Encyclopedia.Dialog.linkDOM("Slave Modification"));
+ }
+	links.push(App.Encyclopedia.Dialog.linkDOM("Corrective Diet"));
+	links.push(App.Encyclopedia.Dialog.linkDOM("Nipple Conversion — Penetratable"));
+ links.push(App.Encyclopedia.Dialog.linkDOM("Ejaculation Boosting Prostate Implant"));
+	return App.UI.DOM.generateLinksStrip(links);
+});
diff --git a/src/gui/Encyclopedia/encyclopedia.tw b/src/gui/Encyclopedia/encyclopedia.tw
index e4b20ec6a82e01ef6efc2e5eac1fdc07fcf27e0b..0ac23615bc55442fd585b5f6451e02e249de5882 100644
--- a/src/gui/Encyclopedia/encyclopedia.tw
+++ b/src/gui/Encyclopedia/encyclopedia.tw
@@ -47,7 +47,7 @@ $encyclopedia
 	<br><br>
 	<h3>Extras</h3>
 		<<= App.Encyclopedia.Dialog.linkSC("Game Mods", "Game Mods")>>
-		<br><<= App.Encyclopedia.Dialog.linkSC("Lore", "Lore")>>
+		<br><<= App.Encyclopedia.Dialog.linkSC("Lore")>>
 		<br><<= App.Encyclopedia.Dialog.linkSC("Credits", "Credits")>>
 	</div>
 
@@ -568,645 +568,6 @@ FACILITY BONUSES
 
 	<br><br>Variety bonuses, if any, will be called out in the facility report at the end of the week. <<= App.Encyclopedia.Dialog.linkSC("Advertising", "Advertising")>> that the facility specializes in any of these areas will supersede variety bonuses for the related qualities. Staffing a facility to appeal to all tastes can be more challenging than building a homogeneous stable and advertising it, but is both powerful and free.
 
-/**********
-LORE: THE FREE CITIES TODAY
-**********/
-<<case "Lore">>
-	//Future room for lore text//
-
-	<br><br>Choose a more particular entry below:
-	<br>
-
-<<case "Money">>
-	//Digital currencies have come a long way in the past twenty years. From the poorly managed, excessively ideological, incompetently run experiments whose failures inspired years of public skepticism, they have matured into a reliable means of exchange. The technical details are unimportant for all but students of economics, since broad diversification and clever design have made them reliable and stable means of exchange. With so many old world currencies collapsing, they are coming to dominate world commerce at last.
-
-	<br><br>The diversified bundle of assets that constitutes the unit of exchange that allows the Free Cities to function is commonly referred to as the "credit" and denoted in print by a ¤ symbol. It is unusually valuable for a basic monetary unit, but the extreme wealth concentration seen in most of the Free Cities makes this a feature rather than a flaw. Estimating its value is extremely difficult, since the value of goods and services varies wildly between Free Cities, and even more wildly between any given Free City and the surrounding old world.
-
-	<br><br> Direct comparisons of purchasing power across long gulfs of time are often unscientific. Such comparisons usually rely on indexing currencies to a good or a market basket of goods, ignoring the constant shifts in the value of goods and services throughout history. The best that a responsible economist can do for a historical value of the ¤ is to give a range. Depending on the index good, the 2037 ¤ can be argued to be worth anywhere between thirty and several hundred US dollars.
-
-	<br><br>— St. Croix, Marianne, "Digital Currencies: A Review," //Journal of Economics, March 2037////
-
-<<case "Food">>
-	//An army marches on its stomach. Likewise, an arcology cannot function without sustenance.
-
-	Please expand this. I'm not good at writing lore. — DCoded//
-
-
-<<case "Disease in the Free Cities">>
-	//In light of some recent alarmism, it's time for the medical profession to clear the air about diseases.
-
-	<br><br>Over the course of the 21st century, diseases and disease treatments have become more powerful, side by side. New disease vectors, antibiotic resistances, and even malicious engineering have combined to make infectious agents tougher. However, medicine has advanced as well, with distributed fabrication techniques and genetic sequencing making tailored drugs widely available to those with the resources to afford them.
-
-	<br><br>This sounds like balance. In the old world, however, it looks like the bugs may be winning. Life expectancy is beginning to settle to pre-antibiotic levels. Meanwhile, in the Free Cities, medicine is <<= App.Encyclopedia.Dialog.linkSC("nymphomania", "Nymphomania")>>: better health care and the ubiquity of modern medicine have nearly eliminated disease as a day-to-day concern.
-
-	<br><br>If you want simple advice, here it is: fuck your Free Cities slaves bareback, but wrap up if you visit the old world.
-
-	<br><br>— Dodgson, Jane Elizabeth, //FC Med Today, March 25, 2032////
-
-
-<<case "Free Cities Justice">>
-	//The Free Cities are not lawless.
-
-	<br><br>The only law respected across all Cities is the enforcement of contracts. Some Cities have limited regulation of other areas, but in general, the only justice available comes when a contract has been breached.
-
-	<br><br>Different Cities have taken different approaches to the obvious problem of dealing with criminal conduct, which in the old world breaks no traditional contract. The most common approach is to require everyone to sign contracts with the owners of their homes and workplaces to commit no crimes while there. In this way, what would be murder in the old world is a breach of the contract with one's landlord not to murder on his property.
-
-	<br><br>Penalties for such conduct are usually left to the imagination of the property owner. With the traditional roles of judge, jury, and jailer concentrated into the hands of a single wealthy person, rich potentates of the Cities hold more personal power over their tenants than anyone since the great feudal lords seven centuries ago.
-
-	<br><br>— Torstein, Jens Learned, //The Modern Libertarian Paradise, March 25, 2032////
-
-
-<<case "Modern Anal">>
-	//The modern acceptance and frequency of heterosexual anal sex has only increased with the return of slavery.
-
-	<br><br>There are numerous reasons for this. First and most obviously, the fact that many men now own women and can thus dictate sexual relations has popularized a sex act that has always appealed to many men. Second, the extremely libertine culture of the Free Cities has placed slaveowners in a perpetual contest with one another for sexual decadence; voluntarily //not// using a slave in all possible manners is considered unusual and even prudish. Third, the assignment of some persons born without natural vaginas to status as female sex slaves has served to make standard the use of the orifice that all slaves, regardless of biological particulars, share in common.
-
-	<br><br>Finally, the development of the now-common slave diet has played a part. In addition to providing slaves with bland, featureless and mildly aphrodisiac nutrition, standard slave nutriment is a cleverly designed liquid diet that almost completely stops the normal digestive processes that might interfere with sex of this kind.
-
-	<br><br>— Lawrence, W. G., //Guide to Modern Slavery, 2037 Edition////
-
-
-<<case "Slave Couture">>
-	//My name is Danni Diemen, and I'm here today to talk about your slaves' clothes.
-
-	<br><br>Let's break it right down into categories, shall we?
-
-	<br><br>''First, clothes for your disobedient bitches.'' We must keep them uncomfortable, yes? The old reliable is //slave clothes//, sometimes referred to as straps. These give her that sex slave allure while keeping her nice and uncomfortable. You can also go for full coverage with //latex//. A suit of that will keep her totally reliant on your little whims. //Plugs// are nice sturdy leather affairs with inward-facing dildos for all the holes — and I do mean all. They're good stuff for breaking a bitch, and she might even learn to take dick a bit better! Word to the wise: not a good idea if you want those holes tight, though. Finally, //corsets//. These will make life tough, but that's good for a @@.orangered;<<= App.Encyclopedia.Dialog.linkSC("rebellious", "From Rebellious to Devoted")>>@@ little cunt, no? And corseting might just narrow that waist. But never mind, on to my favorites.
-
-	<br><br>''Second, nice attire for your prize stock.'' These clothes will keep your good slaves happy. You know, women out in the old world still wear //attractive lingerie// UNDER clothing? Absurd. It's lovely on it's own. If you're looking to be a bit more fun and a bit less classy, go for //string lingerie// instead. You could even let her choose her own //slutty outfits//; watching livestock dress itself is always good fun. When you can afford proper //slutty jewelry//, who needs clothes? I suggest accenting heavy piercings with this. For your hookah fanatics and decadent harem masters, there's //sheer gauze//. Makes even a clumsy girl look like she's dancing to a zither.
-
-	<br><br>Finally, //chastity belts//. Hard to categorize. Different bitches react in different ways to having the front door locked. Depends on how much traffic goes in the back, I find.
-
-	<br><br>— Van Diemen, D. C. G., //Free Cities Fashion (FCF), March 2032////
-
-
-<<case "Slave Marriage">>
-	//Marriage between slaves is one of the facets of slave culture that has varied the most between historical slave societies. Many forbade it entirely, considering it a source of sedition. Others permitted it, but accorded it little force of law. A few have offered it some limited protections even against the slaveowner's will.
-
-	<br><br>Most Free Cities fall into the middle case. Many slaveowners find it amusing to permit their slaves to form and even formalize long term relationships. Slave wives are often permitted to live and work together, sharing a little room and enjoying some measure of sexual exclusivity. Of course, it is just as common for slave wives to be marketed together in brothels.
-
-	<br><br>To date, none of the Free Cities has extended any real legal protection to slave marriages. There is nothing to stop a slaveowner from separating slave wives by sale.
-
-	<br><br>— Lawrence, W. G., //Guide to Modern Slavery, 2037 Edition////
-
-
-<<case "The Ejaculate Market">>
-	//Fun has a price.
-
-	<br><br>Understanding this is the only way to understand some emerging markets in the Free Cities. This maxim often receives criticism from the uninformed, but all it means is that enjoyment is a good (or service) that can be bought and sold like any other. The market for exotic varieties of fun has never been more open than it is right now.
-
-	<br><br>The forming market for ejaculate can only be understood in this context. In the old world, a thriving market for semen for insemination purposes has been thriving for a long while. In the Free Cities, however, homogenized ejaculate is now available in quantities and at prices that make it obvious that it's being put to other uses. Semen is nutritionally marginal; it has some cosmetic applications, but like every other natural cosmetic it has long since been eclipsed by artificial means. The only possible explanation is that many citizens of the Free Cities find various combinations of slaves and large volumes of ejaculate an amusing combination.
-
-	<br><br>Anecdotes abound. Some slaveowners claim that using it as a dietary additive with the knowledge of their slaves enforces an extra layer of degradation and sexual servitude while habituating the unfortunates to oral sex.
-
-	<br><br>— Editorial, //FC Daily Economic Report, October 13, 2031////
-
-
-<<case "Gingering">>
-	//Like much of the traditional husbandry terminology, 'gingering' is a term whose meaning in the Free Cities is slowly diverging from its original old world definition. In animal husbandry, especially of horses, gingering is the nearly extinct practice of placing an irritant compound (traditionally ginger, hence the term) inside one of the animal's orifices, typically the anus, in order to make the animal step high, be sprightly, and generally behave energetically due to the discomfort. Though it was sometimes used at shows and competitions, the usual application was to make the animal seem more valuable for sale.
-
-	<br><br>In the Free Cities, 'gingering' is coming to mean any drugging or other temporary adulteration of a slave in order to make her seem more valuable. For poorly broken slaves, stimulants and depressants are both common. These can be applied to make a resistant slave seem less @@.hotpink;<<= App.Encyclopedia.Dialog.linkSC("rebellious", "From Rebellious to Devoted")>>,@@ or a terrified slave more @@.mediumaquamarine;<<= App.Encyclopedia.Dialog.linkSC("trusting", "Trust")>>,@@ though of course this is unreliable.
-
-	<br><br>More traditional gingering is also sometimes applied. Many new slaves will naturally present their buttocks if an anal irritant is administered in an attempt to relieve the uncomfortable area. Novices to the slave markets may mistake this for sexual promiscuity, though few experienced brokers are likely to be misled, a clue as to why few experienced brokers seriously oppose gingering.
-
-	<br><br>Some markets attempt to stamp out the practice, but most do not. It is generally accepted as permissible gamesmanship on the part of slave vendors, part of the natural skirmishing between buyers and sellers. In some areas it may even be considered lazy and even offensive for a seller to not doctor his human wares: it denies the buyer an opportunity to exercise his acumen in discovering what has been administered, and might even indicate that the seller is not making an effort in more important areas, too. Finally, many in the Free Cities might ask what proper slave dealer would willingly forgo the amusing sight of a girl bouncing with discomfort because someone has just roughly inserted a finger coated with ginger oil into her rectum.
-
-	<br><br>— Lawrence, W. G., //Guide to Modern Slavery, 2037 Edition////
-
-
-<<case "Dyes">>
-	//Fantastic news for every fashion oriented citizen and slaveowner: Your slave's hair color must no longer be exclusively chosen by one the bland @@.darkviolet;<<= App.Encyclopedia.Dialog.linkSC("authority", "Security Expansion")>>@@-approved colors "blazing red", "neon green", "neon blue", "neon pink", "platinum blonde", "dark brown", "brown", "auburn", "black", "blonde", "blue", "burgundy", "chestnut", "chocolate", "copper", "ginger", "golden", "green", "grey", "hazel", "pink", "red", "blue-violet", "purple", "dark orchid", "sea green", "green-yellow", "dark blue", "jet black", and "silver".
-
-	<br><br>Today, we are proud to announce that our, the Free Cities Dyes Department, Research and Development team, found 140 new and exciting ways to color your slave's capital hair. The <a target="_blank" href="https://www.w3schools.com/colors/colors_names.asp">extensive list</a> with the names of all the available colors will be made available to the public, soon.
-
-	<br><br>Please be aware, when you place your order on a custom dye, your description should be precise. Preparing, mixing and shipping is a fully automated process. You may put spaces into the color name. For example, "dark violet" will be handled as "darkviolet". Be sure to put the desired color at the beginning of your description. "Dark violet with silver highlights" is a solid description. Avoid anything too exotic or convoluted. With a description like "weird-ass color with a reddish tint", you will probably end up with red hair. Our guesswork is only so good.
-
-	<br><br>We hope to extend the applicability to body hair and even skin in the near future, too.
-
-	<br><br>— Free Cities Dyes Department R&amp;D, "Announcing exciting Dyes of the Future," //Press Conference, January 7th 2037////
-
-
-/**********
-LORE: FREE CITIES CULTURE TOMORROW
-**********/
-<<case "The New Rome">>
-	////SCFC//
-	<br>&nbsp;&nbsp;&nbsp;&nbsp;— Free Cities armor pauldron inscription; "Slaveholders and Citizens of the Free Cities"
-
-	<br><br>In the Free Cities, Rome is come again.
-
-	<br><br>No people before or since have influenced modern society so deeply as the Romans. The Free Cities are, in return, emulating the Romans more deeply than any other society since their time. Based on the writings, great and low, that have come down to us from that innovative, grasping, and deeply licentious people, it seems that the Romans would likely approve of their posterity.
-
-	<br><br>Fine historical parallels are probably lost on the person with XY chromosomes who is brought to the Free Cities, enslaved, treated thenceforth as female, and expected to behave as female on pain of severe punishment (sometimes with gender reassignment surgery to match, but often without). This redefinition of gender is common in the Free Cities: being penetrated makes one female, while penetrating makes one male. It almost certainly arose as a way for citizens to partake in all that a slave society has to offer, sexually, without reconsidering their own sexual identity. It is not identical to Roman sexual mores, but the Romans are the closest precedent.
-
-	<br><br>This new and evolving system of sexual values does not free citizens from all expectations. Quite to the contrary, many find it just as restrictive as old world values, although differently so. For example, a naturally heterosexual female arcology owner who indulges in vanilla sex with masculine slaves will typically find her strength and acumen being questioned for no other reason than that she permits slaves to penetrate her.
-
-	<br><br>&nbsp;&nbsp;&nbsp;&nbsp;— Lawrence, J. K., and Bolingbroke, D. S., __Trends in Free Cities Culture, 2031__ //Journal of Modern Social Sciences, International Edition, February 2032////
-
-<<case "The Return of Feudalism">>
-	//By the Powers invested in me by the Board of Directors and the Rightful Executive Lord of Arcology F-8, His Majesty King William the First, I proclaim you a Knight, and grant you the right to two slaves, a monthly stipend of six hundred credits and one unit of stock in the Arcology, and the authority to bear a noble Coat of Arms...
-	<br>&nbsp;&nbsp;&nbsp;&nbsp;— Count Felix II von Feight, Knighthood Ceremony recorded in 2032
-
-	<br><br>Once thought to have been a relic of an ancient, less enlightened time, the simultaneously decentralized and individual-focused corporate power structures of the Free Cities has led to the return of feudal power structures. For many arcologies, this has simply occurred without attention or fanfare, as increasingly serf-like underclasses accept the domination of ever-more-powerful executives and elites; some arcologies, such as F-8, have manifested entire, complex new social systems involving 'Kings' and 'Emperors' from which all corporate authority flows.
-
-	<br><br>Originally the idea of an individual crowning himself absolute 'Emperor' of a free city seemed absurd, or even totalitarian, and the first Free City petty kings were met with mockery. This mocking tone appears to have quickly faded from popular Free Cities culture, however, likely due to the realization that new 'Imperial' power structures came with a host of benefits to the wealthy and elite of the arcology that adopts them.
-
-	<br><br>More than simply being rich, the elites of Neo-Feudal, or Neo-Imperial arcologies dub themselves 'Barons' and 'Counts', putting themselves not only monetarily but also socially above the common masses and giving those who hold seats on boards of directors or invest stock in the arcology a physical advantage over their benighted underlings. To the common citizen, the result is ultimately the same, as a factory worker remains a peasant whether he's known as a serf or a citizen. But to the wealthy and distinct within the arcology, the new Feudalism creates a long list of titles and accomplishments to jockey for, manifesting a strange new culture in which junior executives compete with one another for the attention of outright 'Kings' in the hope of one day acquiring the limitless prestige felt by the select caste of neo-Imperial nobility.
-
-	<br><br>&nbsp;&nbsp;&nbsp;&nbsp;— Lawrence, J. K., and Bolingbroke, D. S., __Trends in Free Cities Culture, 2031__ //Journal of Modern Social Sciences, International Edition, February 2032////
-
-
-<<case "Naked, Barefoot, and Pregnant">>
-	//...and helpless, and illiterate, and dependent...
-	<br>&nbsp;&nbsp;&nbsp;&nbsp;— Anonymous slaveowner, on the ideal woman
-
-	<br><br>It must be admitted that some of the boldest statements of early 21st century social justice advocates are now receiving some justification in the Free Cities. A tourist visiting some of the more notorious arcologies is given a public, in-person lesson in precisely what some men are willing to do with women they own. For every misogynist credo there is a Free Cities slaveowner putting it into practice.
-
-	<br><br>Recent reactionism spawned by 20th century social movements pales in comparison to traditionalism, however. Reactionaries of the early 21st century may have breathlessly taken some extreme positions, but for a return to traditional values, true traditionalists have proven themselves to be the unquestioned masters. There are certainly arcologies in which no free women are permitted. The authors recommend that anyone inclined to hold such arcologies up as the extreme by which all others are to be judged should first visit one of the few arcologies in which no free women are permitted, //and// no contraceptives of any kind are permitted, either.
-
-	<br><br>&nbsp;&nbsp;&nbsp;&nbsp;— Lawrence, J. K., and Bolingbroke, D. S., __Trends in Free Cities Culture, 2031__ //Journal of Modern Social Sciences, International Edition, February 2032////
-
-
-<<case "The Top">>
-	//The Master never beats me half as hard as the Head Girl. She fucks me harder, too.
-	<br>&nbsp;&nbsp;&nbsp;&nbsp;— Anonymous slave
-
-	<br><br>The safest slave society is a stratified slave society. Innovative Free Cities slaveowners are carefully differentiating their chattel, ensuring that favored slaves are interposed between them and the masses of their lesser stock. This is one of the oldest principles of leadership, ensuring that the grind of day-to-day direction and correction comes from subordinate leaders, while rewards and planning come from the top. The addition of sexuality to this model simply means that many Free Cities slaves get it, so to speak, from both ends.
-
-	<br><br>There can be great advantages for talented and hardworking slaves. Out in the old world, crime, war, natural disasters, and simple crushing want often strike with little distinction based on @@.cyan;intelligence,@@ skill, or strength. A truly excellent individual serving in a well-thought-out arcology can rise to a position of considerable @@.mediumaquamarine;<<= App.Encyclopedia.Dialog.linkSC("trust", "Trust")>>@@ and power on her merits. It would be foolish to over-romanticize the reality of slavery, however, for all that advancement rests entirely on the whim of her owner. Talent can count for little for girls unlucky enough to find themselves owned by a capricious master.
-
-	<br><br>&nbsp;&nbsp;&nbsp;&nbsp;— Lawrence, J. K., and Bolingbroke, D. S., __Trends in Free Cities Culture, 2031__ //Journal of Modern Social Sciences, International Edition, February 2032////
-
-
-<<case "The Bottom">>
-	//Public servant today, whore tomorrow, glory hole bitch next month.
-	<br>&nbsp;&nbsp;&nbsp;&nbsp;— Anonymous slave
-
-	<br><br>Slaves at the top of the Free Cities hierarchy enjoy a standard of life far above the average free citizen of the old world. However, slaves at the bottom do not. As the Free Cities redefine what it means to be human, they can be extraordinarily callous to those people who are excluded from the new rubric.
-
-	<br><br>Free Cities glory holes are perhaps the ultimate expression of the dark side of modern slavery. In the old world, glory holes were mostly a sexual fantasy, and were confined to certain sexual subcultures where they did exist in reality. Free Cities glory holes are different both in that they exist, and are indeed very common; and in that their occupants are almost never present voluntarily.
-
-	<br><br>Glory holes and slave brothels have a symbiotic existence, and any Free Cities slaveholder who owns a brothel full of pampered prostitutes who claims moral ascendancy for not owning an arcade is ignoring realities. In truth, all slave brothels benefit from the existence of arcades. After all, every slave whore in the Free Cities knows that if she does not perform up to her Master's standards, the arcades exist as a way of extracting value from her body. Every slave brothel receives better efforts out of its slaves due to their knowledge that a worse alternative is always available — if not with their current master, then with some other.
-
-	<br><br>&nbsp;&nbsp;&nbsp;&nbsp;— Lawrence, J. K., and Bolingbroke, D. S., __Trends in Free Cities Culture, 2031__ //Journal of Modern Social Sciences, International Edition, February 2032////
-
-<<case "The Sons of Sekhmet">>
-	//Bhalwi al-sham asmik qalbik, abna Sakhmat damkun. (By the Sun I grasp your Heart, the Sons of Sekhmet have your Blood.)
-	<br>&nbsp;&nbsp;&nbsp;&nbsp;— Mantra, unknown author
-
-	<br><br>Described as the "logical continuation of terrorism within the new world" by a prominent arcology owner, The Sons of Sekhmet are a global terrorist organization notorious for its viciousness and worldwide strike capacity. Formed in 2018 by Quati ibn Malek, the leader of a relatively minor sect of cat worshippers within Egypt, the Sons gained notoriety for seizing one of the first arcology clusters in the Sahara Desert and defending it from multiple incursions by old world peacekeeping forces. Ibn Malek was successfully assassinated by the Egyptian government in 2024, but the Sons have been resilient to being dislodged from their desert stronghold, and have used the resources of an arcology cluster to expand their presence and doctrine onto the global stage.
-
-	<br><br>Their use of cell tactics and frequent insurgent action against arcology owners has led to comparisons with the Daughters of Liberty, but this is a misguided comparison. Where the Daughters are an ideologically-motivated anti-slavery organization, the Sons long ago cast off their ideological roots to adopt a brutal, pragmatic approach to terrorism with few considerations other than the expansion of their own power; Sekhmet cells frequently use slaves as footsoldiers and suicide bombers, but their primary approach to recruitment is with the poor and downtrodden of arcologies and old world nations. Basic Sons doctrine holds that the Old World was destroyed by wealthy, hedonistic plutocrats who have fled their failed nations to the arcologies to live out lives of decadence as the world they shattered collapses, leaving the "common people" to starve in their wake. This simple mantra attracts disgruntled individuals from around the world, and the Sons maintain an extremely online presence, with underground cells active in nearly every old world nation.
-
-	<br><br>The capability of the Sons to provide manufactured weaponry and training, and their willingness to do so to anyone willing to pledge their life to the Orange Sun, makes them exceptionally dangerous. The Sons seize any possible oppurtunity to expand their wealth and power, and frequently launch assassination attempts on prominent public figures, sabotauge essential facilities, and attempt to stir chaos and unrest in vulnerable regions, often with the intent of stepping in and seizing power for themselves once the area has been sufficiently destabilized. Unlike many smaller-scale terrorist groups, the Sons produce some of the best-trained killers and thugs in the New World, and lie almost completely out of the reach of old world nations and arcology owners alike in their scorching desert arcology. Any responsible arcology owner should be aware of the orange sun used as the logo of the Sons of Sekhmet and take care to not expose themselves to any weakness.
-
-	<br><br>&nbsp;&nbsp;&nbsp;&nbsp;— Lawrence, J. K., and Bolingbroke, D. S., __Trends in Free Cities Culture, 2031__ //Journal of Modern Social Sciences, International Edition, February 2032////
-
-
-<<case "The Purity of the Human Form">>
-	//Twentieth century eugenicists weren't wrong, they just didn't have the tools to be right.
-	<br>&nbsp;&nbsp;&nbsp;&nbsp;— Anonymous
-
-	<br><br>High quality Free Cities slaves are remarkably healthy. It should be unsurprising that a population of humans selected for beauty, fed perfectly, required to exercise, given modern medical care, and prevented from indulging any non-sexual excess at all, has become quite impressive in this regard. The cultural fallout of this has been less easy to predict.
-
-	<br><br>Throughout the early part of the 21st century a wide spectra of movements were taking place that have informed the Free Cities ideology of body purism. The left-wing counterculture health movement has found much open ground in a society that allows its adherents to totally control what goes into the bodies of some of its members. On the opposite side of the spectrum, some long-standing reactionary groups have taken this opportunity to experiment with some of their non-racial theories on purity. Finally, many religious or simply moral fundamentalists who believe in some form of purity code now have a captive population to subject to their whims.
-
-	<br><br>Thousands of unintentional experiments on what really makes the ideal human are now under way in the Free Cities, and whatever the balance of humanity may feel about their morality, it is hard to deny that we as a whole stand to benefit from the experimentation.
-
-	<br><br>&nbsp;&nbsp;&nbsp;&nbsp;— Lawrence, J. K., and Bolingbroke, D. S., __Trends in Free Cities Culture, 2031__ //Journal of Modern Social Sciences, International Edition, February 2032////
-
-
-<<case "A World Built on Implants">>
-	//The earlier a slave gets on advanced growth hormones, the better. After all, good-looking implants are a ratio game. The bigger a girl's natural tits are, the bigger implants she can get without looking ridiculous.
-	<br>&nbsp;&nbsp;&nbsp;&nbsp;— standard Free Cities surgical advice
-
-	<br><br>One of the most furious ideological divides in the Free Cities is over implants. Most Free Cities arcologies display a mix of slaves with breast and other implants, but some follow the tastes of owners who strongly prefer all-natural slaves, and some fetishize expansionism to the point of near-universal implantation. This can be a remarkably bitter controversy in places, and should Free Cities culture continue to develop, it is not unlikely that some day physical violence may take place in the Free Cities between extremists on opposite sides of the implant debate.
-
-	<br><br>In any case, the medical technology of implantation has not advanced hugely since the start of the 21st century. The vast majority of implants are still either water-bag or silicone, with silicone generally preferred for its better, more realistic feel. At the more extreme sizes, a variety of fluid-based designs are used, with polypropylene string implants making a return, and newer, fillable adaptive implants becoming more common.
-
-	<br><br>&nbsp;&nbsp;&nbsp;&nbsp;— Lawrence, J. K., and Bolingbroke, D. S., __Trends in Free Cities Culture, 2031__ //Journal of Modern Social Sciences, International Edition, February 2032////
-
-
-<<case "Slaves as Stock">>
-	//Here we have a fine piece for the dairy folks
-	<br>Fine dairy cow for you here ladies and ge-entlemen
-	<br>Who'll give me ten thousand ¤?
-	<br>Ten thousand ¤ bid, now ten thousand five,
-	<br>Now ten thousand five, will you give me eleven?
-	<br>Thirty-two years old, nipples the size of silver dollars
-	<br>Eleven thousand ¤ bid, eleven, eleven?
-	<br>&nbsp;&nbsp;&nbsp;&nbsp;— Free Cities auctioneer
-
-	<br><br>At different points in the history of slavery, slaves have been nearly equal to or even in some cases superior to the lowest classes of free citizen, and have been nearly as low as or even lower than the most valuable categories of animal livestock. Which will become the Free Cities norm remains to be seen; there are arcologies that exemplify either approach. A few arcologies apply both standards, and standards in between, all at once.
-
-	<br><br>The present, however, is a time of great supply in the slave market. The social collapse of many societies in the old world and the perpetual conflicts in many areas are producing an immense number of captives for sale, keeping prices at historically low levels. Many slaveowners treat their chattel relatively well, but this comes from motivations other than financial necessity. With no laws requiring it and no economic reason to treat slaves as different from livestock, many citizens of the Free Cities see little reason to make a distinction. Spectacular expressions of this callousness, like the restraint of women for use as milk production devices or the usage of dangerous dosages of growth hormones, become more understandable when one realizes that the Free Cities are refining what was once a settled idea: what it means to be human.
-
-	<br><br>&nbsp;&nbsp;&nbsp;&nbsp;— Lawrence, J. K., and Bolingbroke, D. S., __Trends in Free Cities Culture, 2031__ //Journal of Modern Social Sciences, International Edition, February 2032////
-
-
-<<case "Slavery and the Physical Ideal">>
-	//Quoth BRODIN:
-	<br>All must lift.
-	<br>&nbsp;&nbsp;&nbsp;&nbsp;— Anonymous
-
-	<br><br>The medical impacts of the widespread reintroduction of slavery are not at all what might have been predicted twenty years ago. Medicine is not our primary focus in this review of Free Cities cultural trends, but a brief look at the striking medical outcomes is critical to understanding some of the social currents at work. By the second half of the twentieth century, the majority of humanity had reached a state of plenty so great that the health dangers of excess were greater than the health dangers of want.
-
-	<br><br>For the first time in modern memory, people — slaves — in the Free Cities are, in large numbers, doing exactly what their doctors recommend. Properly managed slaves eat right, exercise regularly, and do not smoke, drink, or do recreational drugs. These simple but revolutionary changes mean that the more valuable classes of slave are healthier, on average, than any group of human beings has ever been.
-
-	<br><br>Naturally, fetishism, competitiveness, and leisure have intersected to create in the Free Cities a constant escalation of physical one-upmanship when it comes to the training of slaves. Wonderfully muscled specimens have become very common, with feats of athletic prowess cited alongside sexual accomplishments without any distinction. The arcology owners most @@.hotpink;<<= App.Encyclopedia.Dialog.linkSC("devoted", "From Rebellious to Devoted")>>@@ to the human form are creating societies of uniform physical perfection unlike anything in human history.
-
-	<br><br>&nbsp;&nbsp;&nbsp;&nbsp;— Lawrence, J. K., and Bolingbroke, D. S., __Trends in Free Cities Culture, 2031__ //Journal of Modern Social Sciences, International Edition, February 2032////
-
-
-<<case "Faith in the Free Cities">>
-	//I recognize my faults;
-	<br>I am always conscious of my sins.
-	<br>I have sinned against you, Master and God,
-	<br>And done what you consider evil.
-	<br>So you are right in judging me;
-	<br>You are justified in condemning me.
-	<br>&nbsp;&nbsp;&nbsp;&nbsp;— Anonymous slave, 2030
-
-	<br><br>There are almost as many approaches to faith in the Free Cities as there are arcologies. For every arcology owner who cynically exploits religion, there is another who truly believes himself to be ordained by God as master of his fellow human beings. Nevertheless, common elements are identifiable. The most notorious arise from literal readings of scriptural passages that reference slavery.
-
-	<br><br>Each of the three major monotheistic religions arose in a time and place where slavery was common. Thus the institution appears in all three of the great monotheistic holy books. It is childishly simple to find all the scriptural support for a reintroduction of slavery even the most illiberal arcology owner could desire in any one of these. This is presumably not what religious conservatives of the late 20th and early 21st centuries intended when advocating scriptural literalism.
-
-	<br><br>&nbsp;&nbsp;&nbsp;&nbsp;— Lawrence, J. K., and Bolingbroke, D. S., __Trends in Free Cities Culture, 2031__ //Journal of Modern Social Sciences, International Edition, February 2032////
-
-/**********
-LORE: INTERVIEWS
-**********/
-<<case "Slave Whore, Arcology K-2">>
-	Interview with a slave whore
-	<br>"The Rose Petal," Arcology K-2, April 21, 2036
-
-	<br><br>//Good afternoon. What's your name?//
-	<br>Um, what? Are, um, you going to fuck me? I mean, whatever you want to do is okay.
-
-	<br><br>//I'd like to learn more about you.//
-	<br>Um, okay. My name is Candace Ass, I'm twenty years old, and I'm one of the slave whores here at the Petal. Um, what else?
-
-	<br><br>//How did you become a slave? Tell me about how you got here.//
-	<br>Sure. Well, uh, it's kind of boring. I was at a club, and I guess someone put something in my drink, and I passed out, and well [laughs nervously] here I am, I guess?
-
-	<br><br>//What happened when you woke up?//
-	<br>Oh, like, you want me to tell you my life story?
-
-	<br><br>//Sure.//
-	<br>Would it be okay if you fucked me while I tell you? I, uh, can't really think right now. I guess I could also suck — but then I wouldn't be able to talk? Here, please, please stick — oh, okay. Okay! Uh. Yeah. [giggles] That feels better. Thanks!
-
-	<br><br>//Why couldn't you talk without being fucked?//
-	<br>Well, we're all really horny. I'm really horny. Everything does it. The hormones, and all the training, and the drugs, and it's also kind of a habit, you know? It's been almost an hour! If you do it slow like that I'll be okay. [giggles] Yeah. Thank you!
-
-	<br><br>//You can touch yourself if it helps you think more clearly.//
-	<br>Oh thanks but, um, no. That's okay. It's actually really sensitive. Like, um, nobody touches it? And we're not allowed to do that alone anyway. So this is, um, good for me. I'm used to it, I get off like this a lot. If you do it much harder I'll cum, but if you just do it like that, I'll edge for a while. Um, so we can talk? Is that what you wanted?
-
-	<br><br>//You were telling me about being enslaved.//
-	<br>Well, I woke up with a guy on top of me. Kind of like now! But, like, he was really pounding me. It kind of hurt, but I was still really drugged. And I was already on the slave drugs too. And then they put me through a bunch of tests and stuff. That first buttfuck wasn't really a test, it was just a slaver using me. All the new girls get used. But later they tested me a lot, and showed me a bunch of porn and stuff. I think it was to see what I liked. Then they put me in a little room, like a cell, and kept me there for a while.
-
-	<br><br>/How long were you there?//
-	<br>I don't really know? All I really did was sleep. It's what happens when you're getting a lot of drugs and need curatives to keep them from hurting you. You just sleep a lot. And when you're awake, you're really groggy and can't remember much. It makes it easier.
-
-	<br><br>//It makes what easier?//
-	<br>Being raped. I mean, um, that was before I was trained a lot? So I didn't like it most of the time guys fucked me in the ass. But I just laid there and let it happen mostly. I heard from girls later that the slave market I was at uses that as a test, actually.
-
-	<br><br>/A test of what?//
-	<br>Well if a new girl is all drugged up and, you know, gets hard and cums when they fuck her, she gets special treatment. A girl they caught with me, I think she came the first day, and she's, like, a Concubine now? But if a girl still fights on all the drugs they put her in the arcade. Most just lie there like me, which means they need better hormones. So then they clip you.
-
-	<br><br>//Perform an orchiectomy, you mean?//
-	<br>Yeah, cut your balls off. [giggles] I don't remember. I just noticed one day that I was really soft and they were gone. And then I started getting really soft and growing better boobs, and the slavers who came in and used me seemed cuter. I asked one of he wanted a blowjob, and then they took me out and trained me a little.
-
-	<br><br>//Sexual training?//
-	<br>No, no, just obedience and stuff. I mean, they trained me by making me suck cock and bend over and take it up the butt, but no, like, sex classes. But still mostly sleeping. It's like, I would wake up being fucked, and when the guy was done and had injected whatever into me and made me follow a few commands, I'd go shower and then go back to bed again. Weeks and weeks like that, and then some surgeries.
-
-	<br><br>//What surgeries have you had?//
-	<br>Lots! [giggles] Um, lip implants. [kissing noise] Obviously. And some little face stuff, like, bone stuff on my jaw and cheekbones. They did something to my throat, and after not letting me talk for a week my voice was high like it is now. Shoulders and hips, more bone stuff. Those hurt, I slept for like a week after each and they left me alone. Butt implants. And boobs, like, obviously. Three times, bigger each time. If they give you the big kind right away you get stretch marks and it's ugly. They say they're going to do it at least once more, so they're bigger than my head. [giggles]
-
-	<br><br>//When did you move to the brothel?//
-	<br>Well Mistress bought me! I think they decided I was ready to be sold when I started asking for sex. They fuck you regularly, like, it's on a schedule? To get you into the habit, and also to get your asshole used to being a fuckhole. And I started wanting it more than the schedule, and cumming almost every time. So they sold me. Mistress kept me for a week, and then sent me down to the brothel.
-
-	<br><br>//What was that week like?//
-	<br>Um, I'm not supposed to talk about that? But, um, she fucked me, of course. That's not a big secret. Most sex slaves on the drugs and the training and stuff need sex, like, a lot. So if we're serving only one person, we have to beg. It's nice working here, I don't have to beg much. Oh! And that's also when Mistress picked my name and style. Since my skin is so pale, and my asshole bleached to pink, I'm pink! Pink hair, pink lips, pink nails, pink collar, pink heels, pink asspussy. Candy Ass!
-
-	<br><br>//How long have you been here?//
-	<br>Well, ever since Mistress sent me here! So like a year?
-
-	<br><br>//Do you know what you'll be doing in the future?//
-	<br>Um what? Working here I guess? I don't understand.
-
-	<br><br>//How long do you think you'll be here?//
-	<br>Well I guess the oldest girl here is around forty? [giggles] She's nice, I like her. She has these huge soft boobs, and her milk is really nice. So I'm twenty, so twenty years I guess?
-
-	<br><br>//How many customers do you see a day?//
-	<br>It depends, like, it depends on what they want? Like a long fuck or something weird like you, it takes a while, but most just want me to suck them off or take their cock up my butthole. Fifteen maybe?
-
-	<br><br>//That means you're going to have sex in this brothel more than 100,000 times.//
-	<br>The way you say that make it sound like a lot. Oh! Oh, uh, you want me to -
-
-	<br><br>//Be quiet, slave.//
-
-	<br><br>— Lawrence, W. G., //Guide to Modern Slavery, 2037 Edition//
-	Appendix A, Interviews
-
-
-<<case "Slave Acolyte, Arcology V-7">>
-	Interview with a Chattel Religionist acolyte
-	<br>Main plaza, Arcology V-7, April 28, 2036
-
-	<br><br>Good morning, honored visitor! I'm Patience; how may I serve you?
-
-	<br><br>//Good morning. What do you do here?//
-	<br>Why, I am an acolyte of the Prophet! I have the ordained and undeserved glory of being one of his slaves. I do my unworthy best to do whatever he in his infinite wisdom commands me. Today I am a public servant on the plaza, and it is my duty and pleasure to greet visitors to his arcology, Sir, and to serve them in whatever way I can.
-
-	<br><br>//You seem very enthusiastic.//
-	<br>Oh thank you Sir! The Prophet says that the best slave is beautiful and cheerful, but if a slave cannot be both, it is much better for her to be cheerful. [laughs] So I do my best to be cheerful. May I ask what brings you to his arcology, Sir?
-
-	<br><br>//You may. I travel from arcology to arcology. A tourist, you might say. And I write about what I find.//
-	<br>That's wonderful! I'd be happy to share anything with you, anything at all. The Prophet says that all slavery is holy, but Sir, I think his arcology must be more holy than most. And the Prophet says that acolytes are to always be honest, for the holy have nothing to hide.
-
-	<br><br>//I see that.//
-	<br>[laughs] My habit, you mean? You must be joking, Sir! It covers most of me.
-
-	<br><br>//Tell me about it.//
-	<br>With pleasure, Sir. It is white, because all sex slaves are pure. It covers my head and my shoulders but leaves my face bare so that everyone may see me smile. My breasts are bare because, the Prophet says, they are especially holy things, beautiful, and sexual, and nourishing. They must also be bare so that all can see how they are pure and unspoiled by false implants. My belly is bare to show that I have the very great honor of carrying new slaves for the Prophet. I have a golden belt with a strip of cloth in front and behind, because the Prophet says that sometimes, the imagined sight of a slave's holes are as beautiful as the true sight of them.
-
-	<br><br>//You must be carrying twins.//
-	<br>Yes, Sir, twins. I hope very much to be blessed with triplets next time.
-
-	<br><br>//Are they the Prophet's?//
-	<br>[laughs] Oh, no, Sir! I am just an unworthy old acolyte, not one of the Prophet's wives. I was blessed with the seed of one of the Prophet's breeding girls, much better seed than I deserve. She is young and very beautiful, much more beautiful than me, and many acolytes receive her seed so they can make beautiful new slaves.
-
-	<br><br>//Between your pregnancy and your breasts, doesn't standing out here on the plaza tire you out?//
-	<br>No, Sir. Look here, Sir; [turns sideways] a good acolyte has strong legs, and I exercise twice a day. We must be strong to bear new slaves, work hard, and give pleasure without tiring. I can serve you standing, Sir, even like this. May I show you?
-
-	<br><br>//Perhaps later. You seem proud of your body.//
-	<br>I am! The Prophet says that a holy slave may certainly be proud of the way in which she serves. I am not beautiful and I am not young, but I am healthy and strong and I am proud of that. I am blessed to be in an arcology where I can take pride in such things.
-
-	<br><br>//What do you do when you are not being bred or serving in public?//
-	<br>Well, Sir, those are my roles as one of the Prophet's many slave acolytes. In daily life, do you mean, Sir? Well, as I said I exercise a great deal. To maintain my body I must eat a lot, so I have to work hard or I will become fat. Other than that, I live up above us, Sir, in a lower level of the Prophet's penthouse, in a room with my wife. It's a simple life.
-
-	<br><br>//Your wife?//
-	<br>Yes, Sir, my wife Perseverance. There she is, Sir, on the other side of the plaza. One of the ones dressed like me. She has bigger boobs, but she isn't as pregnant right now. [points]
-
-	<br><br>//She looks a lot like you.//
-	<br>Well, she should, Sir, we're sisters. The Prophet says that slave marriages between sisters are very holy, as long as no seed passes between them, and of course no seed can pass between us, because we both have pussies. I love her very much.
-
-	<br><br>//Did you always?//
-	<br>Well yes! Oh, I see, Sir. No, no not that way. It was very hard for us, for a long time, but the Prophet is very wise. We were unworthy and slow to accept his wisdom, but he was patient with us and we learned in the end.
-
-	<br><br>//That's certainly impressive. How did he teach you?//
-	<br>Many ways, of course, Sir, but the Prophet is so wise that he often brings slaves to teach themselves by his wisdom. He has many ways of filling a slave with radiant sexual desire, Sir, so many ways, and they are so powerful, that she must find some way of getting relief. And the Prophet provided that we were each other's only source of relief.
-
-	<br><br>//How was that hard for you?//
-	<br>The Prophet says that it is natural for it to be hard, and as in all things he was right. We were ashamed, and we cried afterward, every time, for a long time. But we became accustomed to each other's bodies, and we saw that many sister-wives were happy, and no one looked down on us. So we agreed with each other to stop being ashamed.
-
-	<br><br>//You're completely comfortable speaking about being married to your sister, here in the plaza?//
-	<br>Sir, I'm completely comfortable saying here in the plaza that when I awoke this morning, she was sucking the milk from one of my nipples, and that we brought each other to orgasm twice before we came out to the plaza today. I love her! I hope you will let us serve you together.
-
-	<br><br>— Lawrence, W. G., //Guide to Modern Slavery, 2037 Edition//
-	Appendix A, Interviews
-
-
-<<case "Public Slave, Arcology A-3">>
-	Interview with a public slave subject to Degradationism
-	<br>Main plaza, Arcology A-2, April 16, 2036
-
-	<br><br>P-please, Sir! Please fuck me, Sir!
-
-	<br><br>//Very well. I will ask, though: why?//
-	<br>B-because I'm overdue, Sir. If I d-don't get someone to f-fuck me soon, my c-collar will hurt me, Sir. Oh please, oh — oh thank you Sir, please, please — oh, OH —
-
-	<br><br>[Some time later.]
-	<br>[Slave collar chimes.]
-
-	<br><br>//What was that?//
-	<br>Oh, um, [sniff] Sir, the arcology detected that you came inside me, Sir. That means that I have a little time before I have to get fucked again, Sir. [sniff]
-
-	<br><br>//All public slaves are subject to this system?//
-	<br>All of the Mistress's public slaves, Sir. Some other owners use it, some don't. [sniff] It's s-supposed to make us g-good public representatives for the arcology's slaves. B-because it makes us d-desperate. [sniff] Sir.
-
-	<br><br>//You seem articulate, slave. What were you before enslavement?//
-	<br>I was a s-student, Sir.
-
-	<br><br>//I see. Slave, I would like to learn more about the arcology. You will accompany me as I tour it. If you answer my questions as I do so, I will fuck you when your collar requires it.//
-	<br>Oh, thank you, Sir. Thank you. Um, how long will you be here, Sir?
-
-	<br><br>//None of your concern. Who is the person in that cage hanging there?//
-	<br>I don't know, Sir. And, Sir, that's not, um, a person. She's a slave, Sir.
-
-	<br><br>//I see. What sorts of things are punished that way?//
-	<br>Oh, lots of things, Sir. Hesitating. Dropping things. Touching a dick or a clit with teeth. Letting cum spill. Anyone can put a slave in one of the cages; they're public, Sir, and anyone can use a slave in them. You see they're kind of shaped so that the slave is positioned so her holes are sticking out, Sir?
-
-	<br><br>//Follow me.//
-	<br>Yes, Sir. [winces] Oh. Um, sorry, Sir.
-
-	<br><br>//Does it hurt to walk in those shoes?//
-	<br>N-no, Sir. I need the heels to walk. It's the chain between my nipples that hurts a little when I walk, Sir, and it bounces around. I was wincing, earlier, partly because I was bouncing around, and it hurt, Sir.
-
-	<br><br>//And yet you orgasmed.//
-	<br>It's h-hard not to, Sir. I have a smart piercing that makes me orgasm, Sir.
-
-	<br><br>//Why do you need heels to walk?//
-	<br>Because my tendons have been clipped, Sir.
-
-	<br><br>//What did you do?//
-	<br>Um, nothing, Sir? It wasn't a punishment, all slaves have their tendons clipped. The heels are a reward. If we're not good, we have to crawl, Sir.
-
-	<br><br>[Walking.]
-
-	<br><br>//Was that fear I just saw?//
-	<br>Yes, Sir.
-
-	<br><br>//Why?//
-	<br>That's the main dairy ahead of us, Sir.
-
-	<br><br>//Is it open to the public?//
-	<br>T-t-to view, yes, Sir.
-
-	<br><br>//Follow me.//
-	<br>Y-yes, Sir. [sniff]
-
-	<br><br>//That is quite an impressive sight.//
-	<br>Yes, Sir.
-
-	<br><br>//Do you know how large they are?//
-	<br>Th-th-their breasts, Sir? About t-twenty or twenty five liters e-ea-each, S-Sir.
-
-	<br><br>//Why does this frighten you so much?//
-	<br>W-well, I'll, um, be put in here, Sir. Someday. Oh. [sniff]
-
-	<br><br>//Why?//
-	<br>All slaves are p-put in h-here, when they're loose, Sir. All the, the, the //sex,// it's just to loosen us, s-so those //things// will fit inside...
-
-	<br><br>— Lawrence, W. G., //Guide to Modern Slavery, 2037 Edition//
-	Appendix A, Interviews
-
-
-<<case "Mercenary, Arcology B-2">>
-	Interview with a Free Cities mercenary
-	The Wild Goose, Arcology B-2, March 11, 2036
-
-	<br><br>//Good evening.//
-	<br>No offense, but I only fuck girls.
-
-	<br><br>//None taken, and I'm just looking for conversation.//
-	<br>'k, buy the next round and converse away.
-
-	<br><br>//Done. Fine to meet you. I'm touring the arcologies, writing a book. I'd like to ask you about life as a mercenary here in the Free Cities.//
-	<br>[laughs] Shit, I'm going to be famous.
-
-	<br><br>//If you'd like to be. I'm W.G.; what's your name?//
-	<br>Well, W.G., I'll answer questions for your book, but I don't actually want to be famous. No names.
-
-	<br><br>//That works fine for me. How did you become a mercenary?//
-	<br>I was a soldier, and the pay was shit, so instead of re-upping I went merc. Boring, but pretty common, believe me. Half the old world militaries are just merc training camps now. You enlist, and then you get out as soon as you have enough experience that a mercenary group'll take you on.
-
-	<br><br>//Did you have combat experience?//
-	<br>[laughs] You know your shit. No, no I did not. I wasn't even infantry. Dirty little secret you probably already know: if you're a girl, most merc groups don't give a fuck what experience you actually have, 'cause either way, they win.
-
-	<br><br>//I think I understand, but lay it out for me.//
-	<br>If you're a good troop, you're a good troop and they come out ahead. Rifle don't care what equipment the merc holding it has. If you're not a good troop, they tie you up in a shipping container, use you 'till they get bored, and then sell you. And they come out ahead. Win-win.
-
-	<br><br>//You obviously came out on the right side of that, but did you suffer any abuse before then?//
-	<br>Nah. It'd be dumb to do anything to a newbie and then not enslave 'em. What, you're gonna rape somebody and then give 'em two-forty rounds, four frags, and a satchel charge? Fuck no.
-
-	<br><br>//That's what you carry?//
-	<br>Yeah fuck that subject anyway. And yeah, when taking prisoners isn't on the agenda. I'm a big girl, I can manage eight mags in a double deck chest rig. If we are taking prisoners, then swap out half the frags for gas and half the mags for an underslung S. G. with beanbags and taser rounds. Though you never want to use any of that, nonlethals included.
-
-	<br><br>//Because you might damage the merchandise?//
-	<br>Because you might damage the merchandise. Did you know it's possible to burst an implant with a beanbag round? Well, it's possible to burst an implant with a beanbag round.
-
-	<br><br>//You know I have to ask about that now.//
-	<br>And I wouldn't have said it if I didn't want to tell the story. Not a long one anyway. Old world mob boss asshole with a moored yacht full of hoes, all tats and fake tits and shit. We went in quick without enough muscle and the guards resisted. Perfect op is, you go in so heavy that nobody resists, but it was rushed and we had to put 'em down. So all these bitches are running around screaming their heads off and we get the call that the police are coming. Didn't want to shoot it out with them since the tip came from a cop in the first place. So we had a couple of minutes to grab what we could and jet. So, beanbags, zipties, bodybags, and off — we — go, one hoe apiece.
-
-	<br><br>//That sounds risky.//
-	<br>Yeah it was. I'm not some hothead who does shit like that for the rush. If you run that op once a week you're going to be dead inside a year. I found new employers not long after that one. Funny story and all, but if I hadn't gone with ceramic side plates in my vest that night I would have been fucked.
-
-	<br><br>//This is a quieter outfit?//
-	<br>Much. Writer, I am now bored. And since I am drunk, and horny, and an incorrigible dyke, I am going to go find a cute slave with freckles and make her eat my pussy until I pass out. You want the other end?
-
-	<br><br>— Lawrence, W. G., //Guide to Modern Slavery, 2037 Edition//
-	Appendix A, Interviews
-
-
-<<case "Slave Trainer, Arcology D-10">>
-	Interview and observation with a Free Cities slave trainer
-	Slave Market training plaza, Arcology D-10, May 23, 2036
-
-	<br><br>''Good morning! I'm Lawrence, W.G. Lawrence.''
-	//Hello. Nice to meet you. I'm Claudia.//
-
-	<br><br>''I'd like to thank you for being willing to have me along as an observer; it's very kind of you.''
-	//My pleasure. I do good work and I don't mind people knowing it.//
-
-	<br><br>''May I ask you a few questions before you get back to your routine?''
-	//Sure. We're going to be working with a new slave today, and I've got her in my office, sitting and thinking. There's no rush. Unpredictability is good.//
-
-	<br><br>''What got you into this career?''
-	//Well, I'm an ex-slave. I served my Mistress, the owner of this arcology, for three years. But I'm getting things out of order. I was a Sister before that. That's a very long story. Do you want to get into that? Every single Sister has the same story. [laughs] That's the beauty of it.//
-
-	<br><br>''That's all right. You mentioned before that you'd like to be known for what you're doing now.''
-	//Yeah. I'm not ashamed of any of it, and I wouldn't be where I am without it, but I'm my own woman now.//
-
-	<br><br>''And you became your own woman after retiring from slavery here?''
-	//I did, yes. It was bittersweet, but it was time. Mistress prefers young ladies.//
-
-	<br><br>''You keep referring to her as Mistress. Is that leftover conditioning?''
-	//[laughs] No, no, that's just what I call her, you know? She'll always be my Mistress in a way. And again, I'm here because she retires her girls incredibly well.//
-
-	<br><br>''What was your role with her?''
-	//I was her Head Girl, for my last year with her, at least. Before that, her Head Girl's girl. That Head Girl was a Sister, too. I can introduce you, if you'd like; she's a trainer here too. We work together sometimes.//
-
-	<br><br>''Was that a blush?''
-	//Okay, okay! We spend time together after work sometimes, too. Anyway, slave training. Come with me, my office is back this way.//
-
-	<br><br>''Who are you training today?''
-	//New slave, just bought her from the kidnappers yesterday. Pretty average. Mid-twenties, student then housewife. Decent tits, but too chubby. We'll work on that. And here we are.//
-
-	<br><br>''Impressive office, even from the outside.''
-	//Thanks. So, she's in there. Room's soundproof, she can't hear us. Here's how I'd like to play this: just stay out of the light, and you can observe as long as you like. She's under a spotlight, and everything else is dark. She probably won't even know you're there.//
-
-	<br><br>''That would work very well, thank you.''
-	//You're welcome. After you.//
-
-	<br><br>//Hello, Suzanne.//
-	H-hi, Ma'am.
-
-	<br><br>//Stand up.//
-	Yes, Ma'am. Um, Ma'am, may I please have my pants back? They took them away in the market, and I thought since you gave my sweater back, you'd -
-
-	<br><br>//Be quiet.//
-	Yes, Ma'am.
-
-	<br><br>//Hold your hands at your sides like I told you, and stop pulling your sweater down over your pussy.//
-	Y-yes, Ma'am.
-
-	<br><br>//Turn around.//
-	Yes, Ma'am.
-
-	<br><br>//Do you like having your big fat naked butt hanging out, bitch?//
-	Yes, Ma — aaAAH! Oh, ow, oh my God, ow -
-
-	<br><br>//Be quiet. That was a 2. Your collar goes to 10.//
-	[sobbing] Yes, Ma'am.
-
-	<br><br>//You just lied to me. I will ask again: do you like having your big fat naked butt hang out?//
-	N-no, Ma'am.
-
-	<br><br>//Take your sweater off. Good bitch. That's right, blush for me. Now, tear it in half.//
-	What!? Oh please, no, please no, I'll do it! Please don't shock me again, Ma'am! [frantic tearing]
-
-	<br><br>//You don't need clothes, bitch. Not anymore. Now, turn back around, and bend over.//
-	Yes, Ma'am.
-
-	<br><br>//Spread your big fat buttcheeks.//
-	Yes, Ma'am.
-
-	<br><br>//Ever had a cock up your butthole, Suzie?//
-	[sobbing]
-
-	<br><br>— Lawrence, W. G., //Guide to Modern Slavery, 2037 Edition//
-	Appendix A, Interviews
-
-<<case "Monarch, Arcology F-8">>
-	Interview with a Free Cities "anarcho-monarch"
-	Arcological Penthouse, Arcology F-8, June 23, 2036
-
-	<br><br>//Good afternoon. My name is -//
-	<br>(From Guard) You will address His Highness with proper courtesy, peasant.
-
-	<br><br>//Ah, my apologies. What I meant to say was, your Majesty, my name is W.G. Lawrence, and I'd like to interview you about this arcology, and your role in leading it. Err, for my book, your Highness.//
-	<br>A scribe. Well, speak quickly. I am a busy man.
-
-	<br><br>//Of course. Just for the record, might you introduce yourself?//
-	<br>(Gestures to a guard.)
-	<br>(From Guard) You are speaking with His Highness King William, First of His name, Savior of the Arcology, Executive Lord and Master of the Board of Directors, Majority Shareholder and Anarcho-Monarch of the most noble Arcology of Feight.
-
-	<br><br>//Yes, yes, right, quite a magnificent title. Might I ask how it came to be that a Monarch took control of a Free City? Isn't strong authority antithetical to the free cities ideal?//
-	<br>[laughs] Not a monarch, an anarcho-monarch. I did not earn my titles through bullying or force, and certainly not through inheriting it from some decrepit geriatric moron like in the old world. I am the legitimate majority stakeholder of the arcology and the rightful head of its board of directors. My rule is strong because I am strong. Were I to become weak, my position would be ousted and the people would take my place directly.
-
-	<br><br>//Is that what the 'anarcho' means?//
-	<br>Mmm. I do not simply rule the people. I am the people.
-
-	<br><br>//But you dictate laws down to them - isn't that mutally contradictory?//
-	<br>No. Peasants do not understand how to govern themselves. Look at the 'pure' anarchies outside our walls, scribe, and you'll see men tearing each other apart for scraps on a bone or a chance with an emaciated crack-whore. Without a strong force to bind a society in place, society falls apart entirely. If my people dislike paying my rents or obeying my Knights, they are free to leave, and take their chances in the ruins of the Old World.
-
-	<br><br>//So your majority ownership and management of the arcology gives you the right to control its populace, who live under the laws you set, and if they disagree with your, ah, symbolic totality, their only option is to leave?//
-	<br>Now you understand.
-
-	<br><br>//Alright. Well, what about the lesser nobles? The Counts and Barons and Knights of the arcology?//
-	<br>What about them?
-
-	<br><br>//Why do they have the right to authority in your free society?//
-	<br>They are my representatives. To be a Knight is to have my personal trust to act in my name, wherever I cannot be. I am the fountain from which all authority stems. So long as my water flows pure, all steps of the fountain remain clear.
-
-	<br><br>//What about corruption? Doesn't giving so much power to entrenched nobility make it more likely that -//
-	<br>(From Guard) Alright, that's enough out of you. The King has better things to do than explain his policies all day. Let's go.
-
-	<br><br>— Lawrence, W. G., //Guide to Modern Slavery, 2037 Edition//
-	Appendix A, Interviews
-
-
 <<case "Credits">>
 	This game was created by a person with no coding experience whatsoever. If I can create a playable h-game, so can you.
 
@@ -1475,12 +836,6 @@ MODS
 <<case "Organic Mesh Breast Implant">>
 	A specialized organic implant produced from the dispensary designed to be implanted into to a slave's natural breast tissue to maintain a slave's breast shape no matter how big her breasts may grow. An expensive and risky procedure proportional to the size of the breasts the mesh will be implanted into. Should health become an issue, the slave in surgery may undergo an emergency mastectomy. Furthermore, once implanted, the mesh cannot be safely removed from the breast. However, total breast removal will rid the slave of the implant; consider strongly when and if you want to implant the mesh before doing so. They are exceedingly difficult to identify once bound to the breast tissue, and combined with their natural shape, are often overlooked.
 
-<<case "Nipple Conversion — Penetratable">>
-	By taking extremely large nipples and inverting them into an adequately sized breast, it is possible to use an advanced surgical suite to create a cavity suitable for penetration. Early attempts found that the novelty of fucking a tit did not offset the discomfort of ramming one's dick into a solid object and as such, the surgery is only applicable to slaves with at least 500ccs of breast tissue per boob. Milk production is unhindered by the alterations, though non-machine milking is far more difficult without a nipple to grab and it is unlikely to be able to properly nourish a child. Arousal is also expressed differently, as the nipple cannot stiffen any longer; instead, engorgement causes the newly crafted passage to tighten, adding to the pleasure of using the unorthodox hole. While looseness is no issue, and the orifice quite capable of stretching around an intruding shaft, depth can become a problem; even the most average of slaveowners will find themselves bottoming out far sooner than they would like. Fortunately, this downside is offset by the novelty of the act and the capacity to push the nipple itself deeper into the slave's breast to better accommodate one's cock. In this case, bigger really is better.
-
-<<case "Ejaculation Boosting Prostate Implant">>
-	An additional prostate implant designed to hyperstimulate one's prostate and store the resulting fluid for release during ejaculation in a specialized reservoir. An easy way to tell if the precum soaked slave you are fucking is sporting this implant is the distinct swelling in her lower belly as she nears release. Due to the sheer amount of prostate fluid released, sperm per volume is greatly reduced, devastating profits of those looking to sell cum. Remember to keep your slaves well hydrated!
-
 <<case "FCTV">>
 	Free Cities TV, or ''FCTV'' as it is more commonly called, is a very popular streaming video service. A venture started not long after the first Free Cities were founded, it took advantage of the new lack of regulatory oversight to create and host content that had long been banned in the old world. Under the guidance of 8HGG Inc., FCTV has developed into a popular mixed-mode service, with a variety of live streaming channels as well as a large selection of ready stream content ranging from hyper porn to contemporary broadcast series shows.
 
@@ -1502,9 +857,6 @@ MODS
 	<br><br>
 	Under normal circumstances, a slave will likely bear a single child from a pregnancy, but with a little extra help from a number of fertility boosting methods, that count can easily be pushed higher. While each fertility agent will only add a chance of an additional ovum, combining treatments will yield a cumulative effect, greatly enhancing the likelihood of multiples. One must exercise caution, however, as a slave's body can only support so many offspring without complications. Miscarriage, discarded embryos, and even slave death are all possible with excessive misuse of fertility agents.
 
-<<case "Corrective Diet">>
-	Using the upgraded kitchen to monitor a slave's caloric intake allows for diets to be tailored to slowly increase or decrease their weight without them realizing.
-
 <<case "Fertility Mix">>
 	A simple dietary blend designed to encourage ovulation. Fertile slaves will find themselves subconsciously lusting for loads of cum blasting into their pussies and, once they give in to temptation, will likely find their bellies swelling with twins or even triplets.
 
@@ -1637,10 +989,6 @@ MODS
 	<br>
 	<br>
 
-<<case "Slave Modification">>
-	What would a slaveowner be without the ability to customize their slaves' bodies? The Free Cities offer a variety of ways to achieve this for an arcology owner. Choose a more particular entry below:
-	<br>
-
 <<case "Inbreeding">>
 	At the intersection of incest and pregnancy lies inbreeding. As seen in royal families throughout history, high levels of inbreeding can result in severe issues, often manifesting as facial deformities or reduced intellectual capacity.
 
diff --git a/src/gui/Encyclopedia/encyclopediaBeingInCharge.js b/src/gui/Encyclopedia/encyclopediaBeingInCharge.js
index 66cf06fb89bcc14984b7b4dfc56dd759df49484e..78a480cbcbacc58368f54d999a0afd55f037f914 100644
--- a/src/gui/Encyclopedia/encyclopediaBeingInCharge.js
+++ b/src/gui/Encyclopedia/encyclopediaBeingInCharge.js
@@ -20,8 +20,8 @@ App.Encyclopedia.addArticle("Arcologies and Reputation", function() {
 
 	r = [];
 	r.push("Your <span class='reputation inc'>reputation</span> is, of course, already quite impressive. The <span class='reputation inc'>reputation</span> tracked in the sidebar is specifically your <span class='reputation inc'>reputation</span> as a slaveowner. It can be raised through decadent actions that display your munificence and opulence. Some random events can increase it, but the most reliable way to improve your <span class='reputation inc'>reputation</span> is to send sexually skilled slaves out into the arcology to offer free sexual services. This assignment is very similar to prostitution, but produces <span class='reputation inc'>reputation</span> rather than");
-	r.push(App.UI.DOM.makeElement("span", App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("money", "Money"), "."), "cash"));
-	r.push(`Your`, App.Encyclopedia.Dialog.linkDOM("Concubine", "Concubine"), `and to a lesser extent, other slaves assigned to your personal sexual service, also have a direct impact on your <span class='reputation inc'>reputation.</span> Maintaining an exclusive harem of beautiful, talented girls is not just one of the greatest perks of being an arcology owner, it's also a grand statement to the world about your personal standing and power.`);
+	r.push(App.Encyclopedia.Dialog.linkDOM("money.", "Money", "cash"));
+	r.push(`Your`, App.Encyclopedia.Dialog.linkDOM("Concubine"), `and to a lesser extent, other slaves assigned to your personal sexual service, also have a direct impact on your <span class='reputation inc'>reputation.</span> Maintaining an exclusive harem of beautiful, talented girls is not just one of the greatest perks of being an arcology owner, it's also a grand statement to the world about your personal standing and power.`);
 	App.Events.addParagraph(f, r);
 
 	r = [];
@@ -116,7 +116,7 @@ App.Encyclopedia.addArticle("Rules Assistant", function() {
 	r = [];
 	r.push(App.Encyclopedia.topic("Rule settings"));
 	r.push("Rules can be used to control certain aspects of slaves everyday lives, for example to automatically give slaves a certain clothing option, collar, footwear or allow slaves to choose their own outfit. They can be used to give unhealthy slaves curatives to improve their health or to put slaves on a diet so that their");
-	r.push(App.Encyclopedia.Dialog.linkDOM("weight", "Weight"));
+	r.push(App.Encyclopedia.Dialog.linkDOM("weight"));
 	r.push("can be closer to the ideal weight. Rules set to <span class='encyclopedia interaction'>No default setting</span> will not apply that particular condition to slaves. Rules can also be renamed to be more indicative of their intended purpose.");
 	App.Events.addParagraph(f, r);
 
@@ -247,7 +247,7 @@ App.Encyclopedia.addArticle("PC Skills", function() {
 	r = [];
 	r.push(App.Encyclopedia.topic("Engineering"));
 	r.push("is a sign of how effective you are building and maintenance. Mastering the skill reduces the cost of <span class='cash'>arcology upgrades and expansions.</span> Can be increased through purchasing arcology upgrades or expanding facility capacity. If the");
-	r.push(App.Encyclopedia.Dialog.linkDOM("Security Expansion", "Security Expansion"));
+	r.push(App.Encyclopedia.Dialog.linkDOM("Security Expansion"));
 	r.push("mod is enabled, the skill is also increased by repairing your arcology.");
 	App.Events.addParagraph(f, r);
 
diff --git a/src/gui/Encyclopedia/encyclopediaBlackMarket.js b/src/gui/Encyclopedia/encyclopediaBlackMarket.js
index e3f800edd4685d119c133a0f3be22848eec4fb4d..b2467f6145500d9ee07d15822c57b3d252e52322 100644
--- a/src/gui/Encyclopedia/encyclopediaBlackMarket.js
+++ b/src/gui/Encyclopedia/encyclopediaBlackMarket.js
@@ -49,7 +49,6 @@ App.Encyclopedia.addCategory("BlackMarket", function() {
  const r = [];
  r.push(App.Encyclopedia.Dialog.linkDOM("The Black Market"));
  r.push(App.Encyclopedia.Dialog.linkDOM("Contraband and Illegal Goods"));
-	/* Can be uncommented once converted to DOM.
  r.push(App.Encyclopedia.Dialog.linkDOM("Gender Radicalism Research"));
  r.push(App.Encyclopedia.Dialog.linkDOM("Slave Professionalism Research"));
  r.push(App.Encyclopedia.Dialog.linkDOM("Transformation Fetishism Research"));
@@ -57,7 +56,6 @@ App.Encyclopedia.addCategory("BlackMarket", function() {
  r.push(App.Encyclopedia.Dialog.linkDOM("Slimness Enthusiast Research"));
 	r.push(App.Encyclopedia.Dialog.linkDOM("Youth Preferentialism Research"));
 	r.push(App.Encyclopedia.Dialog.linkDOM("Hedonistic Decadence Research"));
-	*/
  r.push(App.Encyclopedia.Dialog.linkDOM("Childhood Fertility Induced NCS"));
  return App.UI.DOM.generateLinksStrip(r);
 });
diff --git a/src/gui/Encyclopedia/encyclopediaBody.js b/src/gui/Encyclopedia/encyclopediaBody.js
index 546a77afd65fb7e0cc043ca5c76b895110ad8a90..ac7c2f42412d2c6cf888aa96a1ce73ddaca522c1 100644
--- a/src/gui/Encyclopedia/encyclopediaBody.js
+++ b/src/gui/Encyclopedia/encyclopediaBody.js
@@ -22,7 +22,7 @@ App.Encyclopedia.addArticle("Anuses", function() {
 	r.push(App.Encyclopedia.topic("anuses"));
 	r.push(`are a valuable commodity. Like`);
 	r.push(App.UI.DOM.combineNodes(
-		App.Encyclopedia.Dialog.linkDOM("vaginas", "Vaginas"),
+		App.Encyclopedia.Dialog.linkDOM("vaginas"),
 		`,`
 	));
 	r.push(`they appear in four degrees of tightness: virgin and three increasing levels of looseness. Tighter anuses improve performance at sexual assignments, but most methods of learning `);
@@ -56,10 +56,7 @@ App.Encyclopedia.addArticle("Breasts", function() {
 		App.Encyclopedia.Dialog.linkDOM("XX hormones", "Hormones (XX)"),
 		`, intense`
 	));
-	r.push(App.UI.DOM.combineNodes(
-		App.Encyclopedia.Dialog.linkDOM("lactation", "Lactation"),
-		`,`
-	));
+	r.push(App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("lactation"), `,`));
 	r.push(App.UI.DOM.combineNodes(
 		App.Encyclopedia.Dialog.linkDOM("weight gain", "Weight"),
 		`, or surgery (which`
@@ -88,13 +85,13 @@ App.Encyclopedia.addArticle("Dicks", function() {
 	r.push(App.Encyclopedia.topic("dicks"));
 	r.push(`are less straightforward than`);
 
-	r.push(App.Encyclopedia.Dialog.linkDOM("anuses", "Anuses"));
+	r.push(App.Encyclopedia.Dialog.linkDOM("anuses"));
 	r.push(`or `);
 	r.push(App.UI.DOM.combineNodes(
-		App.Encyclopedia.Dialog.linkDOM("vaginas", "Vaginas"), `.`
+		App.Encyclopedia.Dialog.linkDOM("vaginas"), `.`
 	));
 	r.push(`At game start, larger dicks reduce slave value, though this can be reduced or even reversed by some future society choices. Slaves will remain capable of erection so long as they retain `);
-	r.push(App.Encyclopedia.Dialog.linkDOM("testicles", "Testicles"));
+	r.push(App.Encyclopedia.Dialog.linkDOM("testicles"));
 	r.push(`and are not on `);
 	r.push(App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("female hormone treatments", "Hormones (XX)"), `.`));
 	App.Events.addParagraph(fragment, r);
@@ -118,7 +115,7 @@ App.Encyclopedia.addArticle("Faces", function() {
 	let r = [];
 	for (const [key, shape] of App.Medicine.Modification.faceShape) {
 		if (!shape.hasOwnProperty("requirements") || shape.requirements) {
-			r.push(App.UI.DOM.makeElement("span", capFirstChar(key), "note"));
+			r.push(App.UI.DOM.makeElement("span", capFirstChar(key), ["note"]));
 			r.push(shape.desc);
 			App.Events.addNode(fragment, r, "div");
 			r = [];
@@ -171,15 +168,12 @@ App.Encyclopedia.addArticle("Lactation", function() {
 	r.push(`Slaves can begin to`);
 	r.push(App.Encyclopedia.topic("lactate"));
 	r.push(`two ways: naturally due to pregnancy or constant stimulation, or artificially, through surgical implantation of a slow-release lactation-inducing drug pellet. Drug-induced lactation is more copious, but may damage `);
-	r.push(App.UI.DOM.combineNodes(
-		App.Encyclopedia.Dialog.linkDOM("health", "Health"),
-		`. Larger `
-	));
-	r.push(App.Encyclopedia.Dialog.linkDOM("breasts", "Breasts"));
+	r.push(App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("health"), `. Larger `));
+	r.push(App.Encyclopedia.Dialog.linkDOM("breasts"));
 	r.push(`will produce more milk, but not linearly: diminishing returns apply to bigger tits. Happy and `);
 	r.push(App.Encyclopedia.Dialog.linkDOM("healthy", "Health"));
 	r.push(`cows are also more productive, and slaves with`);
-	r.push(App.Encyclopedia.Dialog.linkDOM("ovaries", "Ovaries"));
+	r.push(App.Encyclopedia.Dialog.linkDOM("ovaries"));
 	r.push(`enjoy a bonus to milk production. Natural lactation will dry up over time if not constantly maintained.`);
 	App.Events.addParagraph(fragment, r);
 	return fragment;
@@ -211,7 +205,7 @@ App.Encyclopedia.addArticle("Musculature", function() {
 	r = [];
 
 	r.push(`From the slave documentation;`);
-	const table = App.UI.DOM.makeElement("table", null, "invisible");
+	const table = App.UI.DOM.makeElement("table", null, ["invisible"]);
 	r.push(table);
 	App.UI.DOM.makeRow(table, `96`, `100`, `extremely muscular`);
 	App.UI.DOM.makeRow(table, `31`, `95`, `muscular`);
@@ -224,17 +218,17 @@ App.Encyclopedia.addArticle("Musculature", function() {
 	App.Events.addParagraph(fragment, r);
 	r = [];
 	r.push(`A standard`);
-	r.push(App.Encyclopedia.Dialog.linkDOM("bodyguard", "Bodyguard"));
+	r.push(App.Encyclopedia.Dialog.linkDOM("bodyguard"));
 	r.push(`is negatively impacted by being weak or extremely muscular and positively impacted by being muscular. A slave that is at the max of tall or very tall (>= 185) can handle being extremely muscular.`);
 	App.Events.addParagraph(fragment, r);
 	App.UI.DOM.appendNewElement("p", fragment, App.UI.DOM.combineNodes(
-		App.Encyclopedia.Dialog.linkDOM("DJ", "DJ"),
+		App.Encyclopedia.Dialog.linkDOM("DJ"),
 		`'s are more effective when they are just under being muscular and inside being toned.`
 	));
 
 	App.UI.DOM.appendNewElement("p", fragment, App.UI.DOM.combineNodes(
-		App.Encyclopedia.Dialog.linkDOM("Nurse", "Nurse"),
-		` is more effective when they are toned or greater.`
+		App.Encyclopedia.Dialog.linkDOM("Nurse"),
+		`'s are more effective when they are toned or greater.`
 	));
 	App.UI.DOM.appendNewElement("p", fragment, `Values >= 95 allows slaves with extremely hypertrophied balls (>70) to move around with effort.`);
 
@@ -247,9 +241,7 @@ App.Encyclopedia.addArticle("Nipples", function() {
 	r.push(`Slaves'`);
 	r.push(App.Encyclopedia.topic("nipples"));
 	r.push(`have varying effects, depending on their shape. Tiny nipples have a negative effect on beauty, puffy and inverted nipples improve it, huge nipples improve it more strongly, and all others have no effect. Inverted and partially inverted nipples can be permanently protruded by nipple piercings or milking: this is uncomfortable, and will reduce`);
-	r.push(App.UI.DOM.makeElement("span",
-		App.Encyclopedia.Dialog.linkDOM("devotion", "From Rebellious to Devoted"), "hotpink"
-	));
+	r.push(App.Encyclopedia.Dialog.linkDOM("devotion", "From Rebellious to Devoted", "hotpink"));
 	r.push(`unless the slave is a`);
 	r.push(App.UI.DOM.combineNodes(
 		App.Encyclopedia.Dialog.linkDOM("masochist", "Masochists"),
@@ -270,10 +262,7 @@ App.Encyclopedia.addArticle("Ovaries", function() {
 	r.push(`Slaves'`);
 	r.push(App.Encyclopedia.topic("ovaries"));
 	r.push(`are necessary for pregnancy and provide a small amount of natural XX hormones. An oophorectomy, available with extreme content enabled, will render a slave barren and stop ovaries' hormonal effects, producing a slave with no natural hormones. Barren slaves do suffer penalties under some future society choices, but do not require costly contraceptives to avoid pregnancy. Ovaries grant a bonus to `);
-	r.push(App.UI.DOM.combineNodes(
-		App.Encyclopedia.Dialog.linkDOM("lactation", "Lactation"),
-		`.`
-	));
+	r.push(App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("lactation"), `.`));
 	App.Events.addParagraph(fragment, r);
 	return fragment;
 }, "body");
@@ -282,15 +271,15 @@ App.Encyclopedia.addArticle("Pregnancy", function() {
 	const fragment = new DocumentFragment();
 	let r = [];
 	r.push(`Slaves require both`);
-	r.push(App.Encyclopedia.Dialog.linkDOM("vaginas", "Vaginas"));
+	r.push(App.Encyclopedia.Dialog.linkDOM("vaginas"));
 	r.push(`and`);
-	r.push(App.Encyclopedia.Dialog.linkDOM("ovaries", "Ovaries"));
+	r.push(App.Encyclopedia.Dialog.linkDOM("ovaries"));
 	r.push(`to become pregnant. However, it's rumored that Gender Radicalist societies have developed a method for `);
 	r.push(App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("male impregnation", "Gender Radicalism Research"), "."));
 	r.push(`Fertile slaves can be impregnated by the player character or a slave with`);
-	r.push(App.Encyclopedia.Dialog.linkDOM("testicles", "Testicles"));
+	r.push(App.Encyclopedia.Dialog.linkDOM("testicles"));
 	r.push(`from the fertile slave's individual menu. Otherwise, slaves with vaginas and ovaries who aren't wearing chastity belts or taking contraceptives, and have not had their tubes tied via surgery, will likely become pregnant if performing sexual jobs or if allowed to have sex with slaves with balls. Pregnancy has a number of minor physical effects and will induce`);
-	r.push(App.Encyclopedia.Dialog.linkDOM("lactation", "Lactation"));
+	r.push(App.Encyclopedia.Dialog.linkDOM("lactation"));
 	App.Events.addParagraph(fragment, r);
 	return fragment;
 }, "body");
@@ -304,14 +293,14 @@ App.Encyclopedia.addArticle("Skin Distinctions", function() {
 	App.Events.addParagraph(fragment, r);
 
 	r = [];
-	r.push(App.UI.DOM.makeElement("span", "Freckles", "italics"));
+	r.push(App.UI.DOM.makeElement("span", "Freckles", ["italics"]));
 	r.push(`of both densities will slightly improve a slave's `);
 	App.Encyclopedia.Dialog.linkDOM("attractiveness score", "Slave Score (Attractiveness)");
 	r.push(`if she has pale or fair skin, and slightly improve it again if she has red hair.`);
 	App.Events.addParagraph(fragment, r);
 
 	r = [];
-	r.push(App.UI.DOM.makeElement("span", "Beauty marks,", "italics"));
+	r.push(App.UI.DOM.makeElement("span", "Beauty marks,", ["italics"]));
 	r.push(`otherwise known as facial moles, will improve a slave's`);
 	App.Encyclopedia.Dialog.linkDOM("attractiveness score", "Slave Score (Attractiveness)");
 	r.push(`if she has a gorgeous `);
@@ -322,7 +311,7 @@ App.Encyclopedia.addArticle("Skin Distinctions", function() {
 	App.Events.addParagraph(fragment, r);
 
 	r = [];
-	r.push(App.UI.DOM.makeElement("span", "Birthmarks", "italics"));
+	r.push(App.UI.DOM.makeElement("span", "Birthmarks", ["italics"]));
 	r.push(`will improve a slave's attractiveness score if she is prestigious, and reduce it if she is not.`);
 	App.Events.addParagraph(fragment, r);
 	return fragment;
@@ -338,7 +327,7 @@ App.Encyclopedia.addArticle("Teeth", function() {
 	r = [];
 	for (const [key, teeth] of App.Medicine.Modification.teeth) {
 		if (!teeth.hasOwnProperty("requirements") || teeth.requirements) {
-			r.push(App.UI.DOM.makeElement("span", capFirstChar(key), "note"));
+			r.push(App.UI.DOM.makeElement("span", capFirstChar(key), ["note"]));
 			r.push(teeth.desc);
 			App.Events.addNode(fragment, r, "div");
 			r = [];
@@ -397,14 +386,14 @@ App.Encyclopedia.addArticle("Weight", function() {
 		`, `,
 		App.Encyclopedia.Dialog.linkDOM("gluttons", "Gluttonous"),
 		`, and `,
-		App.Encyclopedia.Dialog.linkDOM("fitness", "Fitness"),
+		App.Encyclopedia.Dialog.linkDOM("fitness"),
 		` fanatics.`,
 	));
 	App.Events.addParagraph(fragment, r);
 
 	r = [];
 	r.push(`From the slave documentation;`);
-	const table = App.UI.DOM.makeElement("table", null, "invisible");
+	const table = App.UI.DOM.makeElement("table", null, ["invisible"]);
 	r.push(table);
 	App.UI.DOM.makeRow(table, `191`, `200`, `dangerously obese. This can lead to a slave losing their leadership position.`);
 	App.UI.DOM.makeRow(table, `161`, `190`, `super obese`);
@@ -420,7 +409,7 @@ App.Encyclopedia.addArticle("Weight", function() {
 	App.Events.addParagraph(fragment, r);
 	r = [];
 	r.push(`he ideal range for a`);
-	r.push(App.Encyclopedia.Dialog.linkDOM("bodyguard", "Bodyguard"));
+	r.push(App.Encyclopedia.Dialog.linkDOM("bodyguard"));
 	r.push(`is -10 to 30, going either way negatively impacts them.`);
 	App.Events.addParagraph(fragment, r);
 	return fragment;
@@ -432,7 +421,7 @@ App.Encyclopedia.addArticle("Hormones (XX)", function() {
 	r.push(App.UI.DOM.combineNodes(
 		App.Encyclopedia.topic("XX Hormones"),
 		`are female hormones, either from hormone treatments or from `,
-		App.Encyclopedia.Dialog.linkDOM("ovaries", "Ovaries"),
+		App.Encyclopedia.Dialog.linkDOM("ovaries"),
 		`. A hidden hormonal score is calculated for each slave, with positive values more feminine:`
 	));
 	App.Events.addNode(fragment, r, "div");
@@ -442,25 +431,25 @@ App.Encyclopedia.addArticle("Hormones (XX)", function() {
 	App.UI.DOM.appendNewElement("li", list, `normal XX hormones provide +1`);
 	App.UI.DOM.appendNewElement("li", list, `heavy XX hormones provide +2`);
 	App.UI.DOM.appendNewElement("li", list, App.UI.DOM.combineNodes(
-		App.Encyclopedia.Dialog.linkDOM("Ovaries", "Ovaries"),
+		App.Encyclopedia.Dialog.linkDOM("Ovaries"),
 		` provide +1`
 	));
 	App.UI.DOM.appendNewElement("li", list, App.UI.DOM.combineNodes(
-		App.Encyclopedia.Dialog.linkDOM("Testicles", "Testicles"),
+		App.Encyclopedia.Dialog.linkDOM("Testicles"),
 		` provide -1`
 	));
 
 	r = [];
 	r.push(`At a total of +1 with no ovaries present, XY attraction will increase, dicks will shrink, testicles will shrink, deep voices will be raised, small breasts and buttocks will grow, ugly faces will soften, huge clits will shrink, and extreme `);
-	r.push(App.Encyclopedia.Dialog.linkDOM("musculature", "Musculature"));
+	r.push(App.Encyclopedia.Dialog.linkDOM("musculature"));
 	r.push(`will soften.`);
 	App.Events.addParagraph(fragment, r);
 
 	r = [];
 	r.push(`At +2, all these effects become more likely and more extreme, and`);
-	r.push(App.UI.DOM.makeElement("span", App.Encyclopedia.Dialog.linkDOM("devotion", "From Rebellious to Devoted"), "hotpink"));
+	r.push(App.Encyclopedia.Dialog.linkDOM("devotion", "From Rebellious to Devoted", "hotpink"));
 	r.push(`and`);
-	r.push(App.UI.DOM.makeElement("span", App.Encyclopedia.Dialog.linkDOM("trust", "Trust"), "mediumaquamarine"));
+	r.push(App.Encyclopedia.Dialog.linkDOM("trust", "Trust", "mediumaquamarine"));
 	r.push(`can both increase.`);
 	App.Events.addParagraph(fragment, r);
 
@@ -479,7 +468,7 @@ App.Encyclopedia.addArticle("Hormones (XY)", function() {
 	r.push(App.UI.DOM.combineNodes(
 		App.Encyclopedia.topic("XY Hormones"),
 		`are male hormones, either from hormone treatments or from `,
-		App.Encyclopedia.Dialog.linkDOM("Testicles", "Testicles"),
+		App.Encyclopedia.Dialog.linkDOM("Testicles"),
 		`. A hidden hormonal score is calculated for each slave, with negative values more masculine:`
 	));
 	App.Events.addNode(fragment, r, "div");
@@ -489,11 +478,11 @@ App.Encyclopedia.addArticle("Hormones (XY)", function() {
 	App.UI.DOM.appendNewElement("li", list, `normal XY hormones provide -1`);
 	App.UI.DOM.appendNewElement("li", list, `heavy XY hormones provide -2`);
 	App.UI.DOM.appendNewElement("li", list, App.UI.DOM.combineNodes(
-		App.Encyclopedia.Dialog.linkDOM("Ovaries", "Ovaries"),
+		App.Encyclopedia.Dialog.linkDOM("Ovaries"),
 		` provide +1`
 	));
 	App.UI.DOM.appendNewElement("li", list, App.UI.DOM.combineNodes(
-		App.Encyclopedia.Dialog.linkDOM("Testicles", "Testicles"),
+		App.Encyclopedia.Dialog.linkDOM("Testicles"),
 		` provide -1`
 	));
 
@@ -501,7 +490,7 @@ App.Encyclopedia.addArticle("Hormones (XY)", function() {
 
 	r = [];
 	r.push(`At +2, all these effects become more likely and more extreme,`);
-	r.push(App.UI.DOM.makeElement("span", App.Encyclopedia.Dialog.linkDOM("devotion", "From Rebellious to Devoted"), "hotpink"));
+	r.push(App.Encyclopedia.Dialog.linkDOM("devotion", "From Rebellious to Devoted", "hotpink"));
 	r.push(`can decrease, dicks and testicles will grow, voices will deepen, and faces will become uglier.`);
 	App.Events.addParagraph(fragment, r);
 
@@ -516,28 +505,28 @@ App.Encyclopedia.addArticle("Hormones (XY)", function() {
 
 App.Encyclopedia.addCategory("body", function() {
 	const links = [];
-	links.push(App.Encyclopedia.Dialog.linkDOM("Anuses", "Anuses"));
-	links.push(App.Encyclopedia.Dialog.linkDOM("Areolae", "Areolae"));
-	links.push(App.Encyclopedia.Dialog.linkDOM("Breasts", "Breasts"));
-	links.push(App.Encyclopedia.Dialog.linkDOM("Butts", "Butts"));
-	links.push(App.Encyclopedia.Dialog.linkDOM("Clits", "Clits"));
-	links.push(App.Encyclopedia.Dialog.linkDOM("Dicks", "Dicks"));
-	links.push(App.Encyclopedia.Dialog.linkDOM("Ethnicity", "Ethnicity"));
-	links.push(App.Encyclopedia.Dialog.linkDOM("Faces", "Faces"));
-	links.push(App.Encyclopedia.Dialog.linkDOM("Height", "Height"));
-	links.push(App.Encyclopedia.Dialog.linkDOM("Hips", "Hips"));
-	links.push(App.Encyclopedia.Dialog.linkDOM("Lactation", "Lactation"));
-	links.push(App.Encyclopedia.Dialog.linkDOM("Lips", "Lips"));
-	links.push(App.Encyclopedia.Dialog.linkDOM("Musculature", "Musculature"));
-	links.push(App.Encyclopedia.Dialog.linkDOM("Nipples", "Nipples"));
-	links.push(App.Encyclopedia.Dialog.linkDOM("Ovaries", "Ovaries"));
-	links.push(App.Encyclopedia.Dialog.linkDOM("Pregnancy", "Pregnancy"));
-	links.push(App.Encyclopedia.Dialog.linkDOM("Skin Distinctions", "Skin Distinctions"));
-	links.push(App.Encyclopedia.Dialog.linkDOM("Teeth", "Teeth"));
-	links.push(App.Encyclopedia.Dialog.linkDOM("Testicles", "Testicles"));
-	links.push(App.Encyclopedia.Dialog.linkDOM("Vaginas", "Vaginas"));
-	links.push(App.Encyclopedia.Dialog.linkDOM("Waist", "Waist"));
-	links.push(App.Encyclopedia.Dialog.linkDOM("Weight", "Weight"));
+	links.push(App.Encyclopedia.Dialog.linkDOM("Anuses"));
+	links.push(App.Encyclopedia.Dialog.linkDOM("Areolae"));
+	links.push(App.Encyclopedia.Dialog.linkDOM("Breasts"));
+	links.push(App.Encyclopedia.Dialog.linkDOM("Butts"));
+	links.push(App.Encyclopedia.Dialog.linkDOM("Clits"));
+	links.push(App.Encyclopedia.Dialog.linkDOM("Dicks"));
+	links.push(App.Encyclopedia.Dialog.linkDOM("Ethnicity"));
+	links.push(App.Encyclopedia.Dialog.linkDOM("Faces"));
+	links.push(App.Encyclopedia.Dialog.linkDOM("Height"));
+	links.push(App.Encyclopedia.Dialog.linkDOM("Hips"));
+	links.push(App.Encyclopedia.Dialog.linkDOM("Lactation"));
+	links.push(App.Encyclopedia.Dialog.linkDOM("Lips"));
+	links.push(App.Encyclopedia.Dialog.linkDOM("Musculature"));
+	links.push(App.Encyclopedia.Dialog.linkDOM("Nipples"));
+	links.push(App.Encyclopedia.Dialog.linkDOM("Ovaries"));
+	links.push(App.Encyclopedia.Dialog.linkDOM("Pregnancy"));
+	links.push(App.Encyclopedia.Dialog.linkDOM("Skin Distinctions"));
+	links.push(App.Encyclopedia.Dialog.linkDOM("Teeth"));
+	links.push(App.Encyclopedia.Dialog.linkDOM("Testicles"));
+	links.push(App.Encyclopedia.Dialog.linkDOM("Vaginas"));
+	links.push(App.Encyclopedia.Dialog.linkDOM("Waist"));
+	links.push(App.Encyclopedia.Dialog.linkDOM("Weight"));
 	links.push(App.Encyclopedia.Dialog.linkDOM("XX", "Hormones (XX)"));
 	links.push(App.Encyclopedia.Dialog.linkDOM("XY", "Hormones (XY)"));
 	return App.UI.DOM.generateLinksStrip(links);
diff --git a/src/gui/Encyclopedia/encyclopediaCommonAssignments.js b/src/gui/Encyclopedia/encyclopediaCommonAssignments.js
index 854ec89bdb50e5ae545ee8f232b1d88fea42ec46..e3b538b516650fbce05f45dd6c8721386b4fd453 100644
--- a/src/gui/Encyclopedia/encyclopediaCommonAssignments.js
+++ b/src/gui/Encyclopedia/encyclopediaCommonAssignments.js
@@ -56,7 +56,7 @@ App.Encyclopedia.Assignments = {
 		fragment.append(
 			App.Encyclopedia.topic("Getting milked"),
 			" is an assignment which makes money from lactation based on a slave's breasts, ",
-			App.Encyclopedia.Dialog.linkDOM("health", "Health"),
+			App.Encyclopedia.Dialog.linkDOM("health"),
 			" and hormonal status."
 		);
 		if (V.seeDicks > 0) {
@@ -75,7 +75,7 @@ App.Encyclopedia.Assignments = {
 		fragment.append(
 			App.Encyclopedia.topic("Farming"),
 			" is an assignment which produces ",
-			App.Encyclopedia.Dialog.linkDOM("food", "Food"),
+			App.Encyclopedia.Dialog.linkDOM("food"),
 			" from your slaves' hard work"
 		);
 		if (V.seeBestiality) {
@@ -83,7 +83,7 @@ App.Encyclopedia.Assignments = {
 		}
 		fragment.append(
 			". Can also reduce arcology upkeep with upgrades in the ",
-			App.Encyclopedia.Dialog.linkDOM("Farmyard", "Farmyard")
+			App.Encyclopedia.Dialog.linkDOM("Farmyard")
 		);
 		return fragment;
 	},
@@ -105,7 +105,7 @@ App.Encyclopedia.Assignments = {
 		return App.UI.DOM.combineNodes(
 			App.Encyclopedia.topic("Rest"),
 			" is an assignment mostly used to improve ",
-			App.Encyclopedia.Dialog.linkDOM("health", "Health"),
+			App.Encyclopedia.Dialog.linkDOM("health"),
 			". It can be useful to order slaves you wish to intensively modify to rest, since most modifications damage health. It will synergize with curative treatments, providing bonus healing when both are simultaneously applied."
 		);
 	},
@@ -117,7 +117,7 @@ App.Encyclopedia.Assignments = {
 		return App.UI.DOM.combineNodes(
 			App.Encyclopedia.topic("Sexual servitude"),
 			" is an assignment which pleases other slaves by forcing the slave to service them sexually. Useful for driving the targeted slave's ",
-			App.Encyclopedia.Dialog.linkDOM("devotion", "Devotion"),
+			App.Encyclopedia.Dialog.linkDOM("devotion"),
 			" up quickly."
 		);
 	},
@@ -129,7 +129,7 @@ App.Encyclopedia.Assignments = {
 		return App.UI.DOM.combineNodes(
 			App.Encyclopedia.topic("Servitude"),
 			" is an assignment which reduces your upkeep based on the slave's ",
-			App.Encyclopedia.Dialog.linkDOM("devotion", "Devotion"),
+			App.Encyclopedia.Dialog.linkDOM("devotion"),
 			". Available at lower obedience than other jobs, is insensitive to the quality of a slave's body, and doesn't require skills; a good transitional assignment. Unusually, low sex drive is advantageous as a servant, since it reduces distraction. Lactating slaves are slightly better at this job, since they can contribute to their fellow slaves' nutrition."
 		);
 	},
@@ -149,7 +149,7 @@ App.Encyclopedia.addArticle("Slave Assignments", function() {
 	const frag = new DocumentFragment();
 	const r = [];
 	r.push("Slave assignments are stratified into ordinary assignments and");
-	r.push(App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("leadership positions", "Leadership Positions"), "."));
+	r.push(App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("leadership positions"), "."));
 	App.Events.addParagraph(frag, r);
 
 	App.UI.DOM.appendNewElement("p", frag, "Choose a more particular entry below:");
@@ -162,7 +162,7 @@ App.Encyclopedia.addArticle("Attending Classes", function() {
 	const r = [];
 	r.push(App.Encyclopedia.Assignments.attendingClasses());
 	r.push(App.UI.DOM.makeElement("span",
-		App.UI.DOM.combineNodes("Associated facility: ", App.Encyclopedia.Dialog.linkDOM("Schoolroom", "Schoolroom")),
+		App.UI.DOM.combineNodes("Associated facility: ", App.Encyclopedia.Dialog.linkDOM("Schoolroom")),
 		"note"));
 	frag.append(...App.Events.spaceSentences(r));
 	return frag;
@@ -173,7 +173,7 @@ App.Encyclopedia.addArticle("Confinement", function() {
 	const r = [];
 	r.push(App.Encyclopedia.Assignments.confinement());
 	r.push(App.UI.DOM.makeElement("span",
-		App.UI.DOM.combineNodes("Associated facility: ", App.Encyclopedia.Dialog.linkDOM("Cellblock", "Cellblock")),
+		App.UI.DOM.combineNodes("Associated facility: ", App.Encyclopedia.Dialog.linkDOM("Cellblock")),
 		"note"));
 	frag.append(...App.Events.spaceSentences(r));
 	return frag;
@@ -184,7 +184,7 @@ App.Encyclopedia.addArticle("Fucktoy", function() {
 	const r = [];
 	r.push(App.Encyclopedia.Assignments.fucktoy());
 	r.push(App.UI.DOM.makeElement("span",
-		App.UI.DOM.combineNodes("Associated facility: ", App.Encyclopedia.Dialog.linkDOM("Master Suite", "Master Suite")),
+		App.UI.DOM.combineNodes("Associated facility: ", App.Encyclopedia.Dialog.linkDOM("Master Suite")),
 		"note"));
 	frag.append(...App.Events.spaceSentences(r));
 	return frag;
@@ -195,7 +195,7 @@ App.Encyclopedia.addArticle("Glory Hole", function() {
 	const r = [];
 	r.push(App.Encyclopedia.Assignments.gloryHole());
 	r.push(App.UI.DOM.makeElement("span",
-		App.UI.DOM.combineNodes("Associated facility: ", App.Encyclopedia.Dialog.linkDOM("Arcade", "Arcade")),
+		App.UI.DOM.combineNodes("Associated facility: ", App.Encyclopedia.Dialog.linkDOM("Arcade")),
 		"note"));
 	frag.append(...App.Events.spaceSentences(r));
 	return frag;
@@ -208,7 +208,7 @@ App.Encyclopedia.addArticle("Milking", function() {
 	r.push(App.Encyclopedia.Assignments.milking());
 
 	r.push(App.UI.DOM.makeElement("span",
-		App.UI.DOM.combineNodes("Associated facility: ", App.Encyclopedia.Dialog.linkDOM("Dairy", "Dairy")),
+		App.UI.DOM.combineNodes("Associated facility: ", App.Encyclopedia.Dialog.linkDOM("Dairy")),
 		"note"));
 	frag.append(...App.Events.spaceSentences(r));
 	return frag;
@@ -220,7 +220,7 @@ App.Encyclopedia.addArticle("Farming", function() {
 	r.push(App.Encyclopedia.Assignments.farming());
 
 	r.push(App.UI.DOM.makeElement("span",
-		App.UI.DOM.combineNodes("Associated facility: ", App.Encyclopedia.Dialog.linkDOM("Farmyard", "Farmyard")),
+		App.UI.DOM.combineNodes("Associated facility: ", App.Encyclopedia.Dialog.linkDOM("Farmyard")),
 		"note"));
 	frag.append(...App.Events.spaceSentences(r));
 	return frag;
@@ -232,7 +232,7 @@ App.Encyclopedia.addArticle("Public Service", function() {
 	r.push(App.Encyclopedia.Assignments.publicService());
 
 	r.push(App.UI.DOM.makeElement("span",
-		App.UI.DOM.combineNodes("Associated facility: ", App.Encyclopedia.Dialog.linkDOM("Club", "Club")),
+		App.UI.DOM.combineNodes("Associated facility: ", App.Encyclopedia.Dialog.linkDOM("Club")),
 		"note"));
 	frag.append(...App.Events.spaceSentences(r));
 	return frag;
@@ -244,8 +244,8 @@ App.Encyclopedia.addArticle("Rest", function() {
 	r.push(App.Encyclopedia.Assignments.rest());
 
 	r.push(App.UI.DOM.makeElement("span",
-		App.UI.DOM.combineNodes("Associated facilities: ", App.Encyclopedia.Dialog.linkDOM("Spa", "Spa"),
-			", ", App.Encyclopedia.Dialog.linkDOM("Clinic", "Clinic")),
+		App.UI.DOM.combineNodes("Associated facilities: ", App.Encyclopedia.Dialog.linkDOM("Spa"),
+			", ", App.Encyclopedia.Dialog.linkDOM("Clinic")),
 		"note"));
 	frag.append(...App.Events.spaceSentences(r));
 	return frag;
@@ -259,7 +259,7 @@ App.Encyclopedia.addArticle("Servitude", function() {
 	r.push(App.Encyclopedia.Assignments.servitude());
 
 	r.push(App.UI.DOM.makeElement("span",
-		App.UI.DOM.combineNodes("Associated facility: ", App.Encyclopedia.Dialog.linkDOM("Servants' Quarters", "Servants' Quarters")),
+		App.UI.DOM.combineNodes("Associated facility: ", App.Encyclopedia.Dialog.linkDOM("Servants' Quarters")),
 		"note"));
 	frag.append(...App.Events.spaceSentences(r));
 	return frag;
@@ -271,7 +271,7 @@ App.Encyclopedia.addArticle("Whoring", function() {
 	r.push(App.Encyclopedia.Assignments.whoring());
 
 	r.push(App.UI.DOM.makeElement("span",
-		App.UI.DOM.combineNodes("Associated facility: ", App.Encyclopedia.Dialog.linkDOM("Brothel", "Brothel")),
+		App.UI.DOM.combineNodes("Associated facility: ", App.Encyclopedia.Dialog.linkDOM("Brothel")),
 		"note"));
 	frag.append(...App.Events.spaceSentences(r));
 	return frag;
@@ -280,17 +280,17 @@ App.Encyclopedia.addArticle("Whoring", function() {
 App.Encyclopedia.addCategory("assignmentCommon", function() {
 	const r = [];
 	r.push(App.Encyclopedia.Dialog.linkDOM("Common Assignments", "Slave Assignments"));
-	r.push(App.Encyclopedia.Dialog.linkDOM("Career Experience", "Career Experience"));
-	r.push(App.Encyclopedia.Dialog.linkDOM("Attending Classes", "Attending Classes"));
-	r.push(App.Encyclopedia.Dialog.linkDOM("Confinement", "Confinement"));
-	r.push(App.Encyclopedia.Dialog.linkDOM("Farming", "Farming"));
-	r.push(App.Encyclopedia.Dialog.linkDOM("Fucktoy", "Fucktoy"));
-	r.push(App.Encyclopedia.Dialog.linkDOM("Glory Hole", "Glory Hole"));
-	r.push(App.Encyclopedia.Dialog.linkDOM("Milking", "Milking"));
-	r.push(App.Encyclopedia.Dialog.linkDOM("Public Service", "Public Service"));
-	r.push(App.Encyclopedia.Dialog.linkDOM("Rest", "Rest"));
+	r.push(App.Encyclopedia.Dialog.linkDOM("Career Experience"));
+	r.push(App.Encyclopedia.Dialog.linkDOM("Attending Classes"));
+	r.push(App.Encyclopedia.Dialog.linkDOM("Confinement"));
+	r.push(App.Encyclopedia.Dialog.linkDOM("Farming"));
+	r.push(App.Encyclopedia.Dialog.linkDOM("Fucktoy"));
+	r.push(App.Encyclopedia.Dialog.linkDOM("Glory Hole"));
+	r.push(App.Encyclopedia.Dialog.linkDOM("Milking"));
+	r.push(App.Encyclopedia.Dialog.linkDOM("Public Service"));
+	r.push(App.Encyclopedia.Dialog.linkDOM("Rest"));
 	r.push(App.Encyclopedia.Dialog.linkDOM("Servitude, Sexual", "Sexual Servitude"));
-	r.push(App.Encyclopedia.Dialog.linkDOM("Servitude", "Servitude"));
-	r.push(App.Encyclopedia.Dialog.linkDOM("Whoring", "Whoring"));
+	r.push(App.Encyclopedia.Dialog.linkDOM("Servitude"));
+	r.push(App.Encyclopedia.Dialog.linkDOM("Whoring"));
 	return App.UI.DOM.generateLinksStrip(r);
 });
diff --git a/src/gui/Encyclopedia/encyclopediaFutureSocities.js b/src/gui/Encyclopedia/encyclopediaFutureSocities.js
index 3123d91499426205ed4de3075ff1b5b64ac0b35d..39bd7a0675179adcbf0051356f67499b611f3980 100644
--- a/src/gui/Encyclopedia/encyclopediaFutureSocities.js
+++ b/src/gui/Encyclopedia/encyclopediaFutureSocities.js
@@ -24,7 +24,7 @@ App.Encyclopedia.addArticle("Future Societies", function() {
 	return t;
 }, "FutureSocities");
 
-App.Encyclopedia.addArticle("", function() {
+App.Encyclopedia.addArticle("Ethnic Supremacy", function() {
 	const t = new DocumentFragment();
 	const r = new SpacedTextAccumulator(t);
 	r.push(App.UI.DOM.makeElement("span", "Ethnic Supremacy", ["bold"]), "is a future society model which approves of");
@@ -218,7 +218,7 @@ App.Encyclopedia.addArticle("Chattel Religionism", function() {
 	const t = new DocumentFragment();
 	const r = new SpacedTextAccumulator(t);
 	const devotion = (text="devotion") => App.Encyclopedia.Dialog.linkDOM(text, "From Rebellious to Devoted", "hotpink");
-	const chattelReligionism = ["appropriate clothing", devotion("high devotion"), App.Encyclopedia.Dialog.linkDOM("slave marriages")];
+	const chattelReligionism = ["appropriate clothing", devotion("high devotion"), App.Encyclopedia.Dialog.linkDOM("slave marriages", "Slave marriages")];
 
 	r.push(App.UI.DOM.makeElement("span", "Chattel Religionism", ["bold"]), "is a future society model which approves of");
 	r.push(App.UI.DOM.toSentence(chattelReligionism), "while disapproving of slutty clothing.");
@@ -226,6 +226,7 @@ App.Encyclopedia.addArticle("Chattel Religionism", function() {
 	App.Events.addNode(t, ["Applies a small", devotion(), "boost to all slaves, and can remove the weekly", devotion(), "gain cap."], "div", ["indent"]);
 	App.Events.addNode(t, ["Drives an increase in the ratio of slaves to citizens."], "div", ["indent"]);
 	App.Events.addNode(t, ["Can be developed to permanently boost", App.Encyclopedia.Dialog.linkDOM("reputation", "Arcologies and Reputation", "green"), "and quicken slaves' mental conditioning."], "div", ["indent"]);
+	App.Events.addNode(t, ["Can be developed to prefer nudity over conservative clothing."]);
 	App.Events.addNode(t, ["Provides demand for sexual training from", App.Encyclopedia.Dialog.linkDOM("The Corporation.", "The Corporation")]);
 	App.Events.addNode(t, ["Mutually exclusive with", App.Encyclopedia.Dialog.linkDOM("Multiculturalism.", "Multiculturalism")]);
 	return t;
diff --git a/src/gui/Encyclopedia/encyclopediaGuide.js b/src/gui/Encyclopedia/encyclopediaGuide.js
index 7001d1f77d20b0621e161882f0cb588ef6a06da2..bb79bec90055e80511e6013a2267a9818bdfd783 100644
--- a/src/gui/Encyclopedia/encyclopediaGuide.js
+++ b/src/gui/Encyclopedia/encyclopediaGuide.js
@@ -15,7 +15,7 @@ App.Encyclopedia.addArticle("First Game Guide", function() {
 	App.UI.DOM.appendNewElement("h3", f, "Starting options");
 	r = [];
 	r.push("Start the game and select any of the world options; choose normal difficulty, since it's pretty forgiving and this opener will make good");
-	r.push(App.UI.DOM.makeElement("span", App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("money", "Money"), "."), "cash"));
+	r.push(App.Encyclopedia.Dialog.linkDOM("money.", "Money", "cash"));
 	r.push("Build a completely male PC for your first game; it makes");
 	r.push(App.Encyclopedia.Dialog.linkDOM("reputation", "Arcologies and Reputation", "reputation inc"));
 	r.push("maintenance much easier. Choose wealth for both your career and your rumored method of obtaining the arcology; the other options are fun but a full wealth build will set you up quickly to get started.");
@@ -52,20 +52,20 @@ App.Encyclopedia.addArticle("First Game Guide", function() {
 	r.push("and will spoil them. Give <span class='health dec'>unhealthy</span> slaves curatives, and give everyone hormones, since they're");
 	r.push(App.Encyclopedia.Dialog.linkDOM("cheap", "Money", "cash"));
 	r.push("and have good front end benefits. Get everyone working out or dieting to reach a basic fitness level and an attractive (not <span class='warning'>red</span>)");
-	r.push(App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("weight", "Weight"), "."));
+	r.push(App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("weight"), "."));
 	r.push("Sell the girl(s) your predecessor left behind for seed");
 	r.push(App.Encyclopedia.Dialog.linkDOM("money", "Money", "cash"));
 	r.push("and choose the most profitable option; there are ways to maximize this, but worry about that later. Check out the arcology management menu. You should have the");
 	r.push(App.Encyclopedia.Dialog.linkDOM("money", "Money", "cash"));
 	r.push("to upgrade the security systems, build the");
-	r.push(App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("Head Girl suite", "Head Girl Suite"), ","));
+	r.push(App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("Head Girl suite"), ","));
 	r.push(`and to buy the kitchen upgrade; this will make dieting work faster. Check out the slave market, and buy a single bargain slave: <span class="cash">${cashFormat(2000)}</span> is good. Put her in the suite: if she won't go, abuse her until she will. Open the personal attention menu, and fix your Head Girl's flaws; softening is powerful but it takes longer and we're focusing on the basics. <strong>Save the game</strong> and end the turn.`);
 	App.Events.addParagraph(f, r);
 
 	App.UI.DOM.appendNewElement("h3", f, "The end turn report");
 	r = [];
 	r.push("Read this, and note all the colored text. Pay particular attention to <span class='warning'>red,</span> <span class='trust dec'>gold,</span> or <span class='devotion dec'>orchid</span> text; these are generally bad. Being a slave whore is a hard life, and some trouble is inevitable. But take particular note of things like slaves losing");
-	r.push(App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("health", "Health"), ","));
+	r.push(App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("health"), ","));
 	r.push("becoming");
 	r.push(App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("fearful", "Trust"), ","));
 	r.push("or");
@@ -91,13 +91,13 @@ App.Encyclopedia.addArticle("First Game Guide", function() {
 	App.UI.DOM.appendNewElement("h3", f, "Moving forward");
 	r = [];
 	r.push("Hopefully, many of your slaves learned skills during their week of");
-	r.push(App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("whoring", "Whoring"), "."));
+	r.push(App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("whoring"), "."));
 	r.push("Three levels of skill (<span class='cyan'>Veteran Whore</span> or <span class='cyan'>W+++</span> for example) is the maximum, though slaves without vaginas will only acquire two complete levels of sexual skills. As you move through the first ten weeks or so, many of your slaves will max out their whoring and sexual skills. When they do, switch them over to");
 	r.push(App.Encyclopedia.Dialog.linkDOM("public service", "Public Service"));
 	r.push("until they achieve maximum");
 	r.push(App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("entertainment skill", "Entertainment Skill"), ","));
 	r.push("and then put them back on whoring, since cross training will improve their whoring performance. When your Head Girl alternate has maxed skills, make her the Head Girl and train up the MILF she replaced. Switch your personal attention around; for now, fix the");
-	r.push(App.Encyclopedia.Dialog.linkDOM("quirks", "Quirks"));
+	r.push(App.Encyclopedia.Dialog.linkDOM("quirks"));
 	r.push("of the most");
 	r.push(App.Encyclopedia.Dialog.linkDOM("devoted", "From Rebellious to Devoted", "devotion accept"));
 	r.push("slave who has any, since that's the best way to maximize your chances of success each turn.");
@@ -107,9 +107,9 @@ App.Encyclopedia.addArticle("First Game Guide", function() {
 	r.push(`Pay attention to your cash flow. If it's positive and you have a decent buffer of <span class='cash'>${cashFormat(10000)}</span> or so built up, wait for the slave market prices to naturally dip, and then purchase a girl or two to work on once your starting stable is well trained, though you may have to confine or rest new purchases for a while if they're`);
 	r.push(App.Encyclopedia.Dialog.linkDOM("rebellious", "From Rebellious to Devoted", "devotion resistant"));
 	r.push("or sick. If you get a virgin, consider applying chastity to preserve value for resale. When prices are high, consider selling anyone who's free of flaws and has a discovered sexual fetish, since this maximizes value bonuses. Within ten turns, you should be making decent weekly profit, with resale of slaves building up your bank when prices favor sale. Once you're confident of the whoring mechanics, consider building a");
-	r.push(App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("brothel", "Brothel"), "."));
+	r.push(App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("brothel"), "."));
 	r.push("Your alternate Head Girl will make a good");
-	r.push(App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("madam", "Madam"), "."));
+	r.push(App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("madam"), "."));
 	App.Events.addParagraph(f, r);
 
 	return f;
@@ -192,13 +192,13 @@ App.Encyclopedia.addArticle("How to Play", function() {
 	r.push("and performance in most jobs include all appearance stats (that's right, every one; though some are more or less important),");
 	r.push(App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("sexual skills", "Skills"), ","));
 	r.push("a slave's");
-	r.push(App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("health", "Health"), ","));
+	r.push(App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("health"), ","));
 	r.push("and the state of a slave's holes. Going from a novice to a veteran whore will have non-linear impacts on income, since a novice will get good");
 	r.push(App.Encyclopedia.Dialog.linkDOM("money", "Money", "cash"));
 	r.push("for being fresh and little");
 	r.push(App.Encyclopedia.Dialog.linkDOM("money", "Money", "cash"));
 	r.push("for her skills, and a veteran will get the reverse. The");
-	r.push(App.Encyclopedia.Dialog.linkDOM("fetishes", "Fetishes"));
+	r.push(App.Encyclopedia.Dialog.linkDOM("fetishes"));
 	r.push("and physical statuses that get pink text on the main menu (huge tits, bisexual, etc.) give bonuses.");
 	App.Events.addParagraph(f, r);
 
@@ -278,9 +278,9 @@ App.Encyclopedia.addArticle("The Arcology Interface", function() {
 
 	r = [];
 	r.push("The first level with five Sectors is the Concourse. Like the Promenade, it hosts businesses, but these focus more on bulk trade and less on citizens' luxury needs, and include the arcology's slave markets. Its sectors are occupied by Markets by default, which pay rent. Concourse sectors can be upgraded into a");
-	r.push(App.Encyclopedia.Dialog.linkDOM("pit", "Pit"));
+	r.push(App.Encyclopedia.Dialog.linkDOM("pit"));
 	r.push("for fighting slaves, an");
-	r.push(App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("arcade", "Arcade"), ","));
+	r.push(App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("arcade"), ","));
 	r.push("or into a flagship store for the player character's");
 	r.push(App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("corporation", "The Corporation"), "."));
 	App.Events.addParagraph(f, r);
@@ -289,7 +289,7 @@ App.Encyclopedia.addArticle("The Arcology Interface", function() {
 	r.push("The lowest level, also with five Sectors, is the Service level. Its Sectors are occupied by Manufacturing by default, which of course pay rent. If the player is focusing on menial slaves, its Sectors can be upgraded into pens, to increase the total number of");
 	r.push(App.Encyclopedia.Dialog.linkDOM("menial slaves", "Menial Slaves"));
 	r.push("that can be kept in the arcology, or into Sweatshops, to put the labor of menial slaves in the arcology to use. Alternatively, these Sectors can be upgraded into a");
-	r.push(App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("dairy", "Dairy"), ","));
+	r.push(App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("dairy"), ","));
 	r.push("or into a barracks, which will reduce the weekly upkeep of any mercenaries the player character has hired.");
 	App.Events.addParagraph(f, r);
 
@@ -352,7 +352,7 @@ App.Encyclopedia.addArticle("Design Your Master", function() {
 			r.push("and maintaining");
 			r.push(App.Encyclopedia.Dialog.linkDOM("authority", "Security Expansion", "darkviolet"));
 			r.push("will be harder, but upgrades in the propaganda hub will be");
-			r.push(App.UI.DOM.makeElement("span", App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("cheaper", "Money"), "."), "cash"));
+			r.push(App.Encyclopedia.Dialog.linkDOM("cheaper.", "Money", "cash"));
 		} else {
 			r.push(r.pop() + ".");
 		}
@@ -380,7 +380,7 @@ App.Encyclopedia.addArticle("Design Your Master", function() {
 		r.push("<strong>private security contractor</strong> <span class='note'>(also referred to as mercenary background)</span> greatly reduces the cost of keeping mercenaries in your employ.");
 		if (showSecExp) {
 			r.push("Upgrades in the security HQ will be");
-			r.push(App.UI.DOM.makeElement("span", App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("cheaper", "Money"), "."), "cash"));
+			r.push(App.Encyclopedia.Dialog.linkDOM("cheaper.", "Money", "cash"));
 		}
 		r.push("Your starting slaves will have free");
 		r.push(App.Encyclopedia.Dialog.linkDOM("trust", "Trust", "trust careful"));
@@ -397,7 +397,7 @@ App.Encyclopedia.addArticle("Design Your Master", function() {
 		if (showSecExp) {
 			r.push(App.Encyclopedia.Dialog.linkDOM("Authority", "Security Expansion", "darkviolet"));
 			r.push("will be easier to maintain. Plus upgrades in the security HQ will be");
-			r.push(App.UI.DOM.makeElement("span", App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("cheaper", "Money"), "."), "cash"));
+			r.push(App.Encyclopedia.Dialog.linkDOM("cheaper.", "Money", "cash"));
 		}
 		r.push("Starting slaves will be cheaper, in addition having already mastered");
 		r.push(App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("Slaving", "PC Skills"), "."));
@@ -432,7 +432,7 @@ App.Encyclopedia.addArticle("Design Your Master", function() {
 		r.push("at game start");
 		if (showSecExp) {
 			r.push("and upgrades in the propaganda hub will be");
-			r.push(App.UI.DOM.makeElement("span", App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("cheaper", "Money"), "."), "cash"));
+			r.push(App.Encyclopedia.Dialog.linkDOM("cheaper.", "Money", "cash"));
 		} else {
 			r.push(r.pop() + ".");
 		}
@@ -461,7 +461,7 @@ App.Encyclopedia.addArticle("Design Your Master", function() {
 			r.push("You know how to haggle slaves and assert your");
 			r.push(App.UI.DOM.makeElement("span", App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("authority", "Security Expansion"), "."), "darkviolet"));
 			r.push("Plus upgrades in the security HQ will be");
-			r.push(App.UI.DOM.makeElement("span", App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("cheaper", "Money"), "."), "cash"));
+			r.push(App.Encyclopedia.Dialog.linkDOM("cheaper.", "Money", "cash"));
 		}
 		r.push("You know how to haggle slaves. You can spend your free time putting your previous experience to use, proving another source of income however this isn't guaranteed.");
 		App.Events.addNode(ul, r, "li");
@@ -600,12 +600,12 @@ App.Encyclopedia.addArticle("Guide to Eugenics", function() {
 
 App.Encyclopedia.addCategory("guide", function() {
 	const r = [];
-	r.push(App.Encyclopedia.Dialog.linkDOM("First Game Guide", "First Game Guide"));
-	r.push(App.Encyclopedia.Dialog.linkDOM("How to Play", "How to Play"));
-	r.push(App.Encyclopedia.Dialog.linkDOM("Keyboard Shortcuts", "Keyboard Shortcuts"));
-	r.push(App.Encyclopedia.Dialog.linkDOM("The Arcology Interface", "The Arcology Interface"));
-	r.push(App.Encyclopedia.Dialog.linkDOM("Tips and Tricks", "Tips and Tricks"));
-	r.push(App.Encyclopedia.Dialog.linkDOM("Design Your Master", "Design Your Master"));
-	r.push(App.Encyclopedia.Dialog.linkDOM("Guide to Eugenics", "Guide to Eugenics"));
+	r.push(App.Encyclopedia.Dialog.linkDOM("First Game Guide"));
+	r.push(App.Encyclopedia.Dialog.linkDOM("How to Play"));
+	r.push(App.Encyclopedia.Dialog.linkDOM("Keyboard Shortcuts"));
+	r.push(App.Encyclopedia.Dialog.linkDOM("The Arcology Interface"));
+	r.push(App.Encyclopedia.Dialog.linkDOM("Tips and Tricks"));
+	r.push(App.Encyclopedia.Dialog.linkDOM("Design Your Master"));
+	r.push(App.Encyclopedia.Dialog.linkDOM("Guide to Eugenics"));
 	return App.UI.DOM.generateLinksStrip(r);
 });
diff --git a/src/gui/Encyclopedia/encyclopediaLore.js b/src/gui/Encyclopedia/encyclopediaLore.js
new file mode 100644
index 0000000000000000000000000000000000000000..44b4dbdbd2458c1c92134744136444e5e3ed9904
--- /dev/null
+++ b/src/gui/Encyclopedia/encyclopediaLore.js
@@ -0,0 +1,1199 @@
+App.Encyclopedia.addArticle("Lore", function() {
+	const f = new DocumentFragment();
+ App.Events.addNode(f, [App.UI.DOM.makeElement("span", "Future room for lore text", ["note"])], "p");
+ App.Events.addNode(f, ["Choose a more particular entry below:"], "div");
+	return f;
+}, "Lore");
+
+App.Encyclopedia.addArticle("Money", function() {
+	const t = new DocumentFragment();
+ const r = new SpacedTextAccumulator(t);
+ r.push("Digital currencies have come a long way in the past twenty years. From the poorly managed, excessively ideological, incompetently run experiments whose failures inspired years of public skepticism, they have matured into a reliable means of exchange. The technical details are unimportant for all but students of economics, since broad diversification and clever design have made them reliable and stable means of exchange. With so many old world currencies collapsing, they are coming to dominate world commerce at last.");
+ r.toNode("div", ["note"]);
+
+ r.push(`The diversified bundle of assets that constitutes the unit of exchange that allows the Free Cities to function is commonly referred to as the "credit" and denoted in print by a ¤ symbol. It is unusually valuable for a basic monetary unit, but the extreme wealth concentration seen in most of the Free Cities makes this a feature rather than a flaw. Estimating its value is extremely difficult, since the value of goods and services varies wildly between Free Cities, and even more wildly between any given Free City and the surrounding old world.`);
+ r.toNode("p", ["note"]);
+
+ r.push("Direct comparisons of purchasing power across long gulfs of time are often unscientific. Such comparisons usually rely on indexing currencies to a good or a market basket of goods, ignoring the constant shifts in the value of goods and services throughout history. The best that a responsible economist can do for a historical value of the ¤ is to give a range. Depending on the index good, the 2037 ¤ can be argued to be worth anywhere between thirty and several hundred US dollars.");
+ r.toNode("p", ["note"]);
+
+ r.push(`— St. Croix, Marianne, "Digital Currencies: A Review,"`, App.UI.DOM.makeElement("span", "Journal of Economics, March 2037", ["note"]));
+ r.toNode("p", ["note"]);
+	return t;
+}, "Lore");
+
+App.Encyclopedia.addArticle("Food", function() {
+	const t = new DocumentFragment();
+ const r = new SpacedTextAccumulator(t);
+ r.push("An army marches on its stomach. Likewise, an arcology cannot function without sustenance.");
+ r.toNode("div", ["note"]);
+ r.push("Please expand this. I'm not good at writing lore. — DCoded");
+ r.toNode("div", ["note"]);
+
+	return t;
+}, "Lore");
+
+App.Encyclopedia.addArticle("Disease in the Free Cities", function() {
+	const t = new DocumentFragment();
+ const r = new SpacedTextAccumulator(t);
+ r.push("In light of some recent alarmism, it's time for the medical profession to clear the air about diseases.");
+ r.toNode("div", ["note"]);
+
+ r.push("Over the course of the 21st century, diseases and disease treatments have become more powerful, side by side. New disease vectors, antibiotic resistances, and even malicious engineering have combined to make infectious agents tougher. However, medicine has advanced as well, with distributed fabrication techniques and genetic sequencing making tailored drugs widely available to those with the resources to afford them.");
+ r.toNode("p", ["note"]);
+
+ r.push("This sounds like balance. In the old world, however, it looks like the bugs may be winning. Life expectancy is beginning to settle to pre-antibiotic levels. Meanwhile, in the Free Cities, medicine is", App.Encyclopedia.Dialog.linkDOM("nymphomania:", "Nymphomania"), "better health care and the ubiquity of modern medicine have nearly eliminated disease as a day-to-day concern.");
+ r.toNode("p", ["note"]);
+
+ r.push("If you want simple advice, here it is: fuck your Free Cities slaves bareback, but wrap up if you visit the old world.");
+ r.toNode("p", ["note"]);
+
+ r.push("— Dodgson, Jane Elizabeth,", App.UI.DOM.makeElement("span","FC Med Today, March 25, 2032", ["note"]));
+ r.toNode("p", ["note"]);
+
+	return t;
+}, "Lore");
+
+App.Encyclopedia.addArticle("Free Cities Justice", function() {
+	const t = new DocumentFragment();
+ const r = new SpacedTextAccumulator(t);
+ r.push("The Free Cities are not lawless.");
+ r.toNode("div", ["note"]);
+
+ r.push("The only law respected across all Cities is the enforcement of contracts. Some Cities have limited regulation of other areas, but in general, the only justice available comes when a contract has been breached.");
+ r.toNode("p", ["note"]);
+
+ r.push("Different Cities have taken different approaches to the obvious problem of dealing with criminal conduct, which in the old world breaks no traditional contract. The most common approach is to require everyone to sign contracts with the owners of their homes and workplaces to commit no crimes while there. In this way, what would be murder in the old world is a breach of the contract with one's landlord not to murder on his property.");
+ r.toNode("p", ["note"]);
+
+ r.push("Penalties for such conduct are usually left to the imagination of the property owner. With the traditional roles of judge, jury, and jailer concentrated into the hands of a single wealthy person, rich potentates of the Cities hold more personal power over their tenants than anyone since the great feudal lords seven centuries ago.");
+ r.toNode("p", ["note"]);
+
+ r.push("— Torstein, Jens Learned,", App.UI.DOM.makeElement("span","The Modern Libertarian Paradise, March 25, 2032", ["note"]));
+ r.toNode("p", ["note"]);
+
+	return t;
+}, "Lore");
+
+App.Encyclopedia.addArticle("Modern Anal", function() {
+	const t = new DocumentFragment();
+ const r = new SpacedTextAccumulator(t);
+ r.push("The modern acceptance and frequency of heterosexual anal sex has only increased with the return of slavery.");
+ r.toNode("div", ["note"]);
+
+ r.push("There are numerous reasons for this. First and most obviously, the fact that many men now own women and can thus dictate sexual relations has popularized a sex act that has always appealed to many men. Second, the extremely libertine culture of the Free Cities has placed slaveowners in a perpetual contest with one another for sexual decadence; voluntarily //not// using a slave in all possible manners is considered unusual and even prudish. Third, the assignment of some persons born without natural vaginas to status as female sex slaves has served to make standard the use of the orifice that all slaves, regardless of biological particulars, share in common.");
+ r.toNode("p", ["note"]);
+
+ r.push("Finally, the development of the now-common slave diet has played a part. In addition to providing slaves with bland, featureless and mildly aphrodisiac nutrition, standard slave nutriment is a cleverly designed liquid diet that almost completely stops the normal digestive processes that might interfere with sex of this kind.");
+ r.toNode("p", ["note"]);
+
+ r.push("— Lawrence, W. G.,", App.UI.DOM.makeElement("span","Guide to Modern Slavery, 2037 Edition", ["note"]));
+ r.toNode("p", ["note"]);
+
+	return t;
+}, "Lore");
+
+App.Encyclopedia.addArticle("Slave Couture", function() {
+	const t = new DocumentFragment();
+ const r = new SpacedTextAccumulator(t);
+ r.push("My name is Danni Diemen, and I'm here today to talk about your slaves' clothes.");
+ r.toNode("div", ["note"]);
+
+ r.push("Let's break it right down into categories, shall we?");
+ r.toNode("p", ["note"]);
+
+ r.push(App.UI.DOM.makeElement("span","First, clothes for your disobedient bitches.", ["bold"]), "We must keep them uncomfortable, yes? The old reliable is", App.UI.DOM.makeElement("span","slave clothes", ["note"]) + ",", "sometimes referred to as straps. These give her that sex slave allure while keeping her nice and uncomfortable. You can also go for full coverage with", App.UI.DOM.makeElement("span","latex", ["note"]), ". A suit of that will keep her totally reliant on your little whims.", App.UI.DOM.makeElement("span","Plugs", ["note"]), "are nice sturdy leather affairs with inward-facing dildos for all the holes — and I do mean all. They're good stuff for breaking a bitch, and she might even learn to take dick a bit better! Word to the wise: not a good idea if you want those holes tight, though. Finally,", App.UI.DOM.makeElement("span","corsets", ["note"]), ". These will make life tough, but that's good for a", App.Encyclopedia.Dialog.linkDOM("rebellious", "From Rebellious to Devoted", "orangered"), "little cunt, no? And corseting might just narrow that waist. But never mind, on to my favorites.");
+ r.toNode("p", ["note"]);
+
+ r.push(App.UI.DOM.makeElement("span","Second, nice attire for your prize stock.", ["bold"]), "These clothes will keep your good slaves happy. You know, women out in the old world still wear", App.UI.DOM.makeElement("span","attractive lingerie", ["note"]), "UNDER clothing? Absurd. It's lovely on its own. If you're looking to be a bit more fun and a bit less classy, go for", App.UI.DOM.makeElement("span","string lingerie", ["note"]), "instead. You could even let her choose her own", App.UI.DOM.makeElement("span","slutty outfits", ["note"]) + ";", "watching livestock dress itself is always good fun. When you can afford proper", App.UI.DOM.makeElement("span","slutty jewelry", ["note"]) + ",", "who needs clothes? I suggest accenting heavy piercings with this. For your hookah fanatics and decadent harem masters, there's", App.UI.DOM.makeElement("span","sheer gauze", ["note"]) + ".", "Makes even a clumsy girl look like she's dancing to a zither.");
+ r.toNode("p", ["note"]);
+
+ r.push("Finally,", App.UI.DOM.makeElement("span","chastity belts", ["note"]) + ".", "Hard to categorize. Different bitches react in different ways to having the front door locked. Depends on how much traffic goes in the back, I find.");
+ r.toNode("p", ["note"]);
+
+ r.push("— Van Diemen, D. C. G.,", App.UI.DOM.makeElement("span","Free Cities Fashion (FCF), March 2032", ["note"]));
+ r.toNode("p", ["note"]);
+
+	return t;
+}, "Lore");
+
+App.Encyclopedia.addArticle("Slave Marriage", function() {
+	const t = new DocumentFragment();
+ const r = new SpacedTextAccumulator(t);
+ r.push("Marriage between slaves is one of the facets of slave culture that has varied the most between historical slave societies. Many forbade it entirely, considering it a source of sedition. Others permitted it, but accorded it little force of law. A few have offered it some limited protections even against the slaveowner's will.");
+ r.toNode("div", ["note"]);
+
+ r.push("Most Free Cities fall into the middle case. Many slaveowners find it amusing to permit their slaves to form and even formalize long term relationships. Slave wives are often permitted to live and work together, sharing a little room and enjoying some measure of sexual exclusivity. Of course, it is just as common for slave wives to be marketed together in brothels.");
+ r.toNode("p", ["note"]);
+
+ r.push("To date, none of the Free Cities has extended any real legal protection to slave marriages. There is nothing to stop a slaveowner from separating slave wives by sale.");
+ r.toNode("p", ["note"]);
+
+ r.push("— Lawrence, W. G.,", App.UI.DOM.makeElement("span","Guide to Modern Slavery, 2037 Edition", ["note"]));
+ r.toNode("p", ["note"]);
+
+	return t;
+}, "Lore");
+
+App.Encyclopedia.addArticle("The Ejaculate Market", function() {
+	const t = new DocumentFragment();
+ const r = new SpacedTextAccumulator(t);
+ r.push("Fun has a price.");
+ r.toNode("div", ["note"]);
+
+ r.push("Understanding this is the only way to understand some emerging markets in the Free Cities. This maxim often receives criticism from the uninformed, but all it means is that enjoyment is a good (or service) that can be bought and sold like any other. The market for exotic varieties of fun has never been more open than it is right now.");
+ r.toNode("p", ["note"]);
+
+ r.push("The forming market for ejaculate can only be understood in this context. In the old world, a thriving market for semen for insemination purposes has been thriving for a long while. In the Free Cities, however, homogenized ejaculate is now available in quantities and at prices that make it obvious that it's being put to other uses. Semen is nutritionally marginal; it has some cosmetic applications, but like every other natural cosmetic it has long since been eclipsed by artificial means. The only possible explanation is that many citizens of the Free Cities find various combinations of slaves and large volumes of ejaculate an amusing combination.");
+ r.toNode("p", ["note"]);
+
+ r.push("Anecdotes abound. Some slaveowners claim that using it as a dietary additive with the knowledge of their slaves enforces an extra layer of degradation and sexual servitude while habituating the unfortunates to oral sex.");
+ r.toNode("p", ["note"]);
+
+ r.push("— Editorial,", App.UI.DOM.makeElement("span","FC Daily Economic Report, October 13, 2031", ["note"]));
+ r.toNode("p", ["note"]);
+
+	return t;
+}, "Lore");
+
+App.Encyclopedia.addArticle("Gingering", function() {
+	const t = new DocumentFragment();
+ const r = new SpacedTextAccumulator(t);
+ r.push("Like much of the traditional husbandry terminology, 'gingering' is a term whose meaning in the Free Cities is slowly diverging from its original old world definition. In animal husbandry, especially of horses, gingering is the nearly extinct practice of placing an irritant compound (traditionally ginger, hence the term) inside one of the animal's orifices, typically the anus, in order to make the animal step high, be sprightly, and generally behave energetically due to the discomfort. Though it was sometimes used at shows and competitions, the usual application was to make the animal seem more valuable for sale.");
+ r.toNode("div", ["note"]);
+
+ r.push("In the Free Cities, 'gingering' is coming to mean any drugging or other temporary adulteration of a slave in order to make her seem more valuable. For poorly broken slaves, stimulants and depressants are both common. These can be applied to make a resistant slave seem less", App.Encyclopedia.Dialog.linkDOM("rebellious,", "From Rebellious to Devoted", "hotpink"), "or a terrified slave more", App.Encyclopedia.Dialog.linkDOM("trusting,", "Trust", "mediumaquamarine"), "though of course this is unreliable.");
+ r.toNode("p", ["note"]);
+
+ r.push("More traditional gingering is also sometimes applied. Many new slaves will naturally present their buttocks if an anal irritant is administered in an attempt to relieve the uncomfortable area. Novices to the slave markets may mistake this for sexual promiscuity, though few experienced brokers are likely to be misled, a clue as to why few experienced brokers seriously oppose gingering.");
+ r.toNode("p", ["note"]);
+
+ r.push("Some markets attempt to stamp out the practice, but most do not. It is generally accepted as permissible gamesmanship on the part of slave vendors, part of the natural skirmishing between buyers and sellers. In some areas it may even be considered lazy and even offensive for a seller to not doctor his human wares: it denies the buyer an opportunity to exercise his acumen in discovering what has been administered, and might even indicate that the seller is not making an effort in more important areas, too. Finally, many in the Free Cities might ask what proper slave dealer would willingly forgo the amusing sight of a girl bouncing with discomfort because someone has just roughly inserted a finger coated with ginger oil into her rectum.");
+ r.toNode("p", ["note"]);
+
+ r.push("— Lawrence, W. G.,", App.UI.DOM.makeElement("span","Guide to Modern Slavery, 2037 Edition", ["note"]));
+ r.toNode("p", ["note"]);
+
+	return t;
+}, "Lore");
+
+App.Encyclopedia.addArticle("Dyes", function() {
+ const approvedDyes = ["blazing red", "neon green", "neon blue", "neon pink", "platinum blonde", "dark brown", "brown", "auburn", "black", "blonde", "blue", "burgundy", "chestnut", "chocolate", "copper", "ginger", "golden", "green", "grey", "hazel", "pink", "red", "blue-violet", "purple", "dark orchid", "sea green", "green-yellow", "dark blue", "jet black", "silver"];
+	const t = new DocumentFragment();
+ const r = new SpacedTextAccumulator(t);
+ r.push(`Fantastic news for every fashion oriented citizen and slaveowner: Your slave's hair color must no longer be exclusively chosen by one the bland authority-approved colors: ${toSentence(approvedDyes)}.`);
+ r.toNode("div", ["note"]);
+
+ r.push(`Today, we are proud to announce that our, the Free Cities Dyes Department, Research and Development team, found 140 new and exciting ways to color your slave's capital hair. The <a target="_blank" href="https://www.w3schools.com/colors/colors_names.asp">extensive list</a> with the names of all the available colors will be made available to the public, soon.`);
+ r.toNode("p", ["note"]);
+
+ r.push(`Please be aware, when you place your order on a custom dye, your description should be precise. Preparing, mixing and shipping is a fully automated process. You may put spaces into the color name. For example, "dark violet" will be handled as "darkviolet". Be sure to put the desired color at the beginning of your description. "Dark violet with silver highlights" is a solid description. Avoid anything too exotic or convoluted. With a description like "weird-ass color with a reddish tint", you will probably end up with red hair. Our guesswork is only so good.`);
+ r.toNode("p", ["note"]);
+
+ r.push("We hope to extend the applicability to body hair and even skin in the near future, too.");
+ r.toNode("p", ["note"]);
+
+ r.push(`- Free Cities Dyes Department R&amp;D, "Announcing exciting Dyes of the Future,"`, App.UI.DOM.makeElement("span","Press Conference, January 7th 2037", ["note"]));
+ r.toNode("p", ["note"]);
+
+	return t;
+}, "Lore");
+
+App.Encyclopedia.addArticle("The New Rome", function() {
+	const t = new DocumentFragment();
+ const r = new SpacedTextAccumulator(t);
+ r.push(App.UI.DOM.makeElement("span","SCFC", ["note"]));
+ r.toNode("div", ["note"]);
+ App.Events.addNode(t, [`— Free Cities armor pauldron inscription; "Slaveholders and Citizens of the Free Cities"`], "div", ["note"]);
+
+ r.push("In the Free Cities, Rome is come again.");
+ r.toNode("p", ["note"]);
+
+ r.push("No people before or since have influenced modern society so deeply as the Romans. The Free Cities are, in return, emulating the Romans more deeply than any other society since their time. Based on the writings, great and low, that have come down to us from that innovative, grasping, and deeply licentious people, it seems that the Romans would likely approve of their posterity.");
+ r.toNode("p", ["note"]);
+
+ r.push("Fine historical parallels are probably lost on the person with XY chromosomes who is brought to the Free Cities, enslaved, treated thenceforth as female, and expected to behave as female on pain of severe punishment (sometimes with gender reassignment surgery to match, but often without). This redefinition of gender is common in the Free Cities: being penetrated makes one female, while penetrating makes one male. It almost certainly arose as a way for citizens to partake in all that a slave society has to offer, sexually, without reconsidering their own sexual identity. It is not identical to Roman sexual mores, but the Romans are the closest precedent.");
+ r.toNode("p", ["note"]);
+
+ r.push("This new and evolving system of sexual values does not free citizens from all expectations. Quite to the contrary, many find it just as restrictive as old world values, although differently so. For example, a naturally heterosexual female arcology owner who indulges in vanilla sex with masculine slaves will typically find her strength and acumen being questioned for no other reason than that she permits slaves to penetrate her.");
+ r.toNode("p", ["note"]);
+ App.Events.addNode(t, ["— Lawrence, J. K., and Bolingbroke, D. S.,", App.UI.DOM.makeElement("span","Trends in Free Cities Culture, 2031", ["underline"]), App.UI.DOM.makeElement("span","Journal of Modern Social Sciences, International Edition, February 2032", ["note"])], "p", ["note"]);
+
+	return t;
+}, "Lore");
+
+App.Encyclopedia.addArticle("The Return of Feudalism", function() {
+	const t = new DocumentFragment();
+ const r = new SpacedTextAccumulator(t);
+ r.push("By the Powers invested in me by the Board of Directors and the Rightful Executive Lord of Arcology F-8, His Majesty King William the First, I proclaim you a Knight, and grant you the right to two slaves, a monthly stipend of six hundred credits and one unit of stock in the Arcology, and the authority to bear a noble Coat of Arms...");
+ r.toNode("div", ["note"]);
+ App.Events.addNode(t, [App.UI.DOM.makeElement("span","— Count Felix II von Feight, Knighthood Ceremony recorded in 2032", ["note"])], "div", ["indent"]);
+
+ r.push("Once thought to have been a relic of an ancient, less enlightened time, the simultaneously decentralized and individual-focused corporate power structures of the Free Cities has led to the return of feudal power structures. For many arcologies, this has simply occurred without attention or fanfare, as increasingly serf-like underclasses accept the domination of ever-more-powerful executives and elites; some arcologies, such as F-8, have manifested entire, complex new social systems involving 'Kings' and 'Emperors' from which all corporate authority flows.");
+ r.toNode("div", ["note"]);
+
+ r.push("Originally the idea of an individual crowning himself absolute 'Emperor' of a free city seemed absurd, or even totalitarian, and the first Free City petty kings were met with mockery. This mocking tone appears to have quickly faded from popular Free Cities culture, however, likely due to the realization that new 'Imperial' power structures came with a host of benefits to the wealthy and elite of the arcology that adopts them.");
+ r.toNode("div", ["note"]);
+
+ r.push("More than simply being rich, the elites of Neo-Feudal, or Neo-Imperial arcologies dub themselves 'Barons' and 'Counts', putting themselves not only monetarily but also socially above the common masses and giving those who hold seats on boards of directors or invest stock in the arcology a physical advantage over their benighted underlings. To the common citizen, the result is ultimately the same, as a factory worker remains a peasant whether he's known as a serf or a citizen. But to the wealthy and distinct within the arcology, the new Feudalism creates a long list of titles and accomplishments to jockey for, manifesting a strange new culture in which junior executives compete with one another for the attention of outright 'Kings' in the hope of one day acquiring the limitless prestige felt by the select caste of neo-Imperial nobility.");
+ r.toNode("div", ["note"]);
+
+ App.Events.addNode(t, ["— Lawrence, J. K., and Bolingbroke, D. S.,", App.UI.DOM.makeElement("span","Trends in Free Cities Culture, 2031", ["underline"]), App.UI.DOM.makeElement("span","Journal of Modern Social Sciences, International Edition, February 2032", ["note"])], "div", ["note"]);
+
+	return t;
+}, "Lore");
+
+App.Encyclopedia.addArticle("Naked, Barefoot, and Pregnant", function() {
+	const t = new DocumentFragment();
+ const r = new SpacedTextAccumulator(t);
+ r.push("...and helpless, and illiterate, and dependent...");
+ r.toNode("div", ["note"]);
+ App.Events.addNode(t, ["— Anonymous slaveowner, on the ideal woman"], "div", ["indent", "note"]);
+
+ r.push("It must be admitted that some of the boldest statements of early 21st century social justice advocates are now receiving some justification in the Free Cities. A tourist visiting some of the more notorious arcologies is given a public, in-person lesson in precisely what some men are willing to do with women they own. For every misogynist credo there is a Free Cities slaveowner putting it into practice.");
+ r.toNode("p", ["note"]);
+
+ r.push("Recent reactionism spawned by 20th century social movements pales in comparison to traditionalism, however. Reactionaries of the early 21st century may have breathlessly taken some extreme positions, but for a return to traditional values, true traditionalists have proven themselves to be the unquestioned masters. There are certainly arcologies in which no free women are permitted. The authors recommend that anyone inclined to hold such arcologies up as the extreme by which all others are to be judged should first visit one of the few arcologies in which no free women are permitted,", App.UI.DOM.makeElement("span","and", ["note"]), "no contraceptives of any kind are permitted, either.");
+ r.toNode("p", ["note"]);
+ App.Events.addNode(t, ["— Lawrence, J. K., and Bolingbroke, D. S.,", App.UI.DOM.makeElement("span","Trends in Free Cities Culture, 2031", ["underline"]), App.UI.DOM.makeElement("span","Journal of Modern Social Sciences, International Edition, February 2032", ["note"])], "p", ["indent", "note"]);
+
+	return t;
+}, "Lore");
+
+App.Encyclopedia.addArticle("The Sons of Sekhmet", function() {
+	const t = new DocumentFragment();
+ const r = new SpacedTextAccumulator(t);
+ r.push("Bhalwi al-sham asmik qalbik, abna Sakhmat damkun. (By the Sun I grasp your Heart, the Sons of Sekhmet have your Blood.)");
+ r.toNode("div", ["note"]);
+ App.Events.addNode(t, ["— Mantra, unknown author"], "div", ["indent", "note"]);
+
+ r.push(`Described as the "logical continuation of terrorism within the new world" by a prominent arcology owner, The Sons of Sekhmet are a global terrorist organization notorious for its viciousness and worldwide strike capacity. Formed in 2018 by Quati ibn Malek, the leader of a relatively minor sect of cat worshippers within Egypt, the Sons gained notoriety for seizing one of the first arcology clusters in the Sahara Desert and defending it from multiple incursions by old world peacekeeping forces. Ibn Malek was successfully assassinated by the Egyptian government in 2024, but the Sons have been resilient to being dislodged from their desert stronghold, and have used the resources of an arcology cluster to expand their presence and doctrine onto the global stage.`);
+ r.toNode("p", ["note"]);
+
+ r.push(`Their use of cell tactics and frequent insurgent action against arcology owners has led to comparisons with the Daughters of Liberty, but this is a misguided comparison. Where the Daughters are an ideologically-motivated anti-slavery organization, the Sons long ago cast off their ideological roots to adopt a brutal, pragmatic approach to terrorism with few considerations other than the expansion of their own power; Sekhmet cells frequently use slaves as footsoldiers and suicide bombers, but their primary approach to recruitment is with the poor and downtrodden of arcologies and old world nations. Basic Sons doctrine holds that the Old World was destroyed by wealthy, hedonistic plutocrats who have fled their failed nations to the arcologies to live out lives of decadence as the world they shattered collapses, leaving the "common people" to starve in their wake. This simple mantra attracts disgruntled individuals from around the world, and the Sons maintain an extremely online presence, with underground cells active in nearly every old world nation.`);
+ r.toNode("p", ["note"]);
+
+ r.push("The capability of the Sons to provide manufactured weaponry and training, and their willingness to do so to anyone willing to pledge their life to the Orange Sun, makes them exceptionally dangerous. The Sons seize any possible oppurtunity to expand their wealth and power, and frequently launch assassination attempts on prominent public figures, sabotauge essential facilities, and attempt to stir chaos and unrest in vulnerable regions, often with the intent of stepping in and seizing power for themselves once the area has been sufficiently destabilized. Unlike many smaller-scale terrorist groups, the Sons produce some of the best-trained killers and thugs in the New World, and lie almost completely out of the reach of old world nations and arcology owners alike in their scorching desert arcology. Any responsible arcology owner should be aware of the orange sun used as the logo of the Sons of Sekhmet and take care to not expose themselves to any weakness.");
+ r.toNode("p", ["note"]);
+ App.Events.addNode(t, ["— Lawrence, J. K., and Bolingbroke, D. S.,", App.UI.DOM.makeElement("span","Trends in Free Cities Culture, 2031", ["underline"]), App.UI.DOM.makeElement("span","Journal of Modern Social Sciences, International Edition, February 2032", ["note"])], "p", ["indent", "note"]);
+
+	return t;
+}, "Lore");
+
+App.Encyclopedia.addArticle("The Top", function() {
+	const t = new DocumentFragment();
+ const r = new SpacedTextAccumulator(t);
+ r.push("The Master never beats me half as hard as the Head Girl. She fucks me harder, too.");
+ r.toNode("div", ["note"]);
+ App.Events.addNode(t, ["— Anonymous slave"], "div", ["indent", "note"]);
+
+ r.push("The safest slave society is a stratified slave society. Innovative Free Cities slaveowners are carefully differentiating their chattel, ensuring that favored slaves are interposed between them and the masses of their lesser stock. This is one of the oldest principles of leadership, ensuring that the grind of day-to-day direction and correction comes from subordinate leaders, while rewards and planning come from the top. The addition of sexuality to this model simply means that many Free Cities slaves get it, so to speak, from both ends.");
+ r.toNode("p", ["note"]);
+
+ r.push("There can be great advantages for talented and hardworking slaves. Out in the old world, crime, war, natural disasters, and simple crushing want often strike with little distinction based on", App.UI.DOM.makeElement("span","intelligence", ["cyan"]), "skill, or strength. A truly excellent individual serving in a well-thought-out arcology can rise to a position of considerable", App.Encyclopedia.Dialog.linkDOM("trust", "Trust", "mediumaquamarine"), "and power on her merits. It would be foolish to over-romanticize the reality of slavery, however, for all that advancement rests entirely on the whim of her owner. Talent can count for little for girls unlucky enough to find themselves owned by a capricious master.");
+ r.toNode("p", ["note"]);
+ App.Events.addNode(t, ["— Lawrence, J. K., and Bolingbroke, D. S.,", App.UI.DOM.makeElement("span","Trends in Free Cities Culture, 2031", ["underline"]), App.UI.DOM.makeElement("span","Journal of Modern Social Sciences, International Edition, February 2032", ["note"])], "p", ["indent", "note"]);
+
+	return t;
+}, "Lore");
+
+App.Encyclopedia.addArticle("The Bottom", function() {
+	const t = new DocumentFragment();
+ const r = new SpacedTextAccumulator(t);
+ r.push("Public servant today, whore tomorrow, glory hole bitch next month.");
+ r.toNode("div", ["note"]);
+ App.Events.addNode(t, ["— Anonymous slave"], "div", ["indent", "note"]);
+
+ r.push("Slaves at the top of the Free Cities hierarchy enjoy a standard of life far above the average free citizen of the old world. However, slaves at the bottom do not. As the Free Cities redefine what it means to be human, they can be extraordinarily callous to those people who are excluded from the new rubric.");
+ r.toNode("p", ["note"]);
+
+ r.push("Free Cities glory holes are perhaps the ultimate expression of the dark side of modern slavery. In the old world, glory holes were mostly a sexual fantasy, and were confined to certain sexual subcultures where they did exist in reality. Free Cities glory holes are different both in that they exist, and are indeed very common; and in that their occupants are almost never present voluntarily.");
+ r.toNode("p", ["note"]);
+
+ r.push("Glory holes and slave brothels have a symbiotic existence, and any Free Cities slaveholder who owns a brothel full of pampered prostitutes who claims moral ascendancy for not owning an arcade is ignoring realities. In truth, all slave brothels benefit from the existence of arcades. After all, every slave whore in the Free Cities knows that if she does not perform up to her Master's standards, the arcades exist as a way of extracting value from her body. Every slave brothel receives better efforts out of its slaves due to their knowledge that a worse alternative is always available — if not with their current master, then with some other.");
+ r.toNode("p", ["note"]);
+ App.Events.addNode(t, ["— Lawrence, J. K., and Bolingbroke, D. S.,", App.UI.DOM.makeElement("span","Trends in Free Cities Culture, 2031", ["underline"]), App.UI.DOM.makeElement("span","Journal of Modern Social Sciences, International Edition, February 2032", ["note"])], "p", ["indent", "note"]);
+
+	return t;
+}, "Lore");
+
+App.Encyclopedia.addArticle("The Purity of the Human Form", function() {
+	const t = new DocumentFragment();
+ const r = new SpacedTextAccumulator(t);
+ r.push("Twentieth century eugenicists weren't wrong, they just didn't have the tools to be right.");
+ r.toNode("div", ["note"]);
+ App.Events.addNode(t, ["— Anonymous"], "div", ["indent", "note"]);
+
+ r.push("High quality Free Cities slaves are remarkably healthy. It should be unsurprising that a population of humans selected for beauty, fed perfectly, required to exercise, given modern medical care, and prevented from indulging any non-sexual excess at all, has become quite impressive in this regard. The cultural fallout of this has been less easy to predict.");
+ r.toNode("p", ["note"]);
+
+ r.push("Throughout the early part of the 21st century a wide spectra of movements were taking place that have informed the Free Cities ideology of body purism. The left-wing counterculture health movement has found much open ground in a society that allows its adherents to totally control what goes into the bodies of some of its members. On the opposite side of the spectrum, some long-standing reactionary groups have taken this opportunity to experiment with some of their non-racial theories on purity. Finally, many religious or simply moral fundamentalists who believe in some form of purity code now have a captive population to subject to their whims.");
+ r.toNode("p", ["note"]);
+
+ r.push("Thousands of unintentional experiments on what really makes the ideal human are now under way in the Free Cities, and whatever the balance of humanity may feel about their morality, it is hard to deny that we as a whole stand to benefit from the experimentation.");
+ r.toNode("p", ["note"]);
+ App.Events.addNode(t, ["— Lawrence, J. K., and Bolingbroke, D. S.,", App.UI.DOM.makeElement("span","Trends in Free Cities Culture, 2031", ["underline"]), App.UI.DOM.makeElement("span","Journal of Modern Social Sciences, International Edition, February 2032", ["note"])], "p", ["indent", "note"]);
+
+	return t;
+}, "Lore");
+
+App.Encyclopedia.addArticle("A World Built on Implants", function() {
+	const t = new DocumentFragment();
+ const r = new SpacedTextAccumulator(t);
+ r.push("The earlier a slave gets on advanced growth hormones, the better. After all, good-looking implants are a ratio game. The bigger a girl's natural tits are, the bigger implants she can get without looking ridiculous.");
+ r.toNode("div", ["note"]);
+ App.Events.addNode(t, ["— standard Free Cities surgical advice"], "div", ["indent", "note"]);
+
+ r.push("One of the most furious ideological divides in the Free Cities is over implants. Most Free Cities arcologies display a mix of slaves with breast and other implants, but some follow the tastes of owners who strongly prefer all-natural slaves, and some fetishize expansionism to the point of near-universal implantation. This can be a remarkably bitter controversy in places, and should Free Cities culture continue to develop, it is not unlikely that some day physical violence may take place in the Free Cities between extremists on opposite sides of the implant debate.");
+ r.toNode("p", ["note"]);
+
+ r.push("In any case, the medical technology of implantation has not advanced hugely since the start of the 21st century. The vast majority of implants are still either water-bag or silicone, with silicone generally preferred for its better, more realistic feel. At the more extreme sizes, a variety of fluid-based designs are used, with polypropylene string implants making a return, and newer, fillable adaptive implants becoming more common.");
+ r.toNode("p", ["note"]);
+ App.Events.addNode(t, ["— Lawrence, J. K., and Bolingbroke, D. S.,", App.UI.DOM.makeElement("span","Trends in Free Cities Culture, 2031", ["underline"]), App.UI.DOM.makeElement("span","Journal of Modern Social Sciences, International Edition, February 2032", ["note"])], "p", ["indent", "note"]);
+
+	return t;
+}, "Lore");
+
+App.Encyclopedia.addArticle("Slaves as Stock", function() {
+	const t = new DocumentFragment();
+ const r = new SpacedTextAccumulator(t);
+ r.push("Here we have a fine piece for the dairy folks");
+ r.toNode("div", ["note"]);
+ r.push("Fine dairy cow for you here ladies and ge-entlemen");
+ r.toNode("div", ["note"]);
+ r.push("Who'll give me ten thousand ¤?");
+ r.toNode("div", ["note"]);
+ r.push("Ten thousand ¤ bid, now ten thousand five,");
+ r.toNode("div", ["note"]);
+ r.push("Now ten thousand five, will you give me eleven?");
+ r.toNode("div", ["note"]);
+ r.push("Thirty-two years old, nipples the size of silver dollars");
+ r.toNode("div", ["note"]);
+ r.push("Eleven thousand ¤ bid, eleven, eleven?");
+ App.Events.addNode(t, ["— Free Cities auctioneer"], "div", ["indent", "note"]);
+
+ r.push("At different points in the history of slavery, slaves have been nearly equal to or even in some cases superior to the lowest classes of free citizen, and have been nearly as low as or even lower than the most valuable categories of animal livestock. Which will become the Free Cities norm remains to be seen; there are arcologies that exemplify either approach. A few arcologies apply both standards, and standards in between, all at once.");
+ r.toNode("p", ["note"]);
+
+ r.push("The present, however, is a time of great supply in the slave market. The social collapse of many societies in the old world and the perpetual conflicts in many areas are producing an immense number of captives for sale, keeping prices at historically low levels. Many slaveowners treat their chattel relatively well, but this comes from motivations other than financial necessity. With no laws requiring it and no economic reason to treat slaves as different from livestock, many citizens of the Free Cities see little reason to make a distinction. Spectacular expressions of this callousness, like the restraint of women for use as milk production devices or the usage of dangerous dosages of growth hormones, become more understandable when one realizes that the Free Cities are refining what was once a settled idea: what it means to be human.");
+ r.toNode("p", ["note"]);
+ App.Events.addNode(t, ["— Lawrence, J. K., and Bolingbroke, D. S.,", App.UI.DOM.makeElement("span","Trends in Free Cities Culture, 2031", ["underline"]), App.UI.DOM.makeElement("span","Journal of Modern Social Sciences, International Edition, February 2032", ["note"])], "p", ["indent", "note"]);
+ 
+	return t;
+}, "Lore");
+
+App.Encyclopedia.addArticle("Slavery and the Physical Ideal", function() {
+	const t = new DocumentFragment();
+ const r = new SpacedTextAccumulator(t);
+ r.push("Quoth BRODIN:");
+ r.toNode("div", ["note"]);
+ r.push("All must lift.");
+ r.toNode("div", ["note"]);
+ App.Events.addNode(t, ["— Anonymous"], "div", ["indent", "note"]);
+
+ r.push("The medical impacts of the widespread reintroduction of slavery are not at all what might have been predicted twenty years ago. Medicine is not our primary focus in this review of Free Cities cultural trends, but a brief look at the striking medical outcomes is critical to understanding some of the social currents at work. By the second half of the twentieth century, the majority of humanity had reached a state of plenty so great that the health dangers of excess were greater than the health dangers of want.");
+ r.toNode("p", ["note"]);
+
+ r.push("For the first time in modern memory, people — slaves — in the Free Cities are, in large numbers, doing exactly what their doctors recommend. Properly managed slaves eat right, exercise regularly, and do not smoke, drink, or do recreational drugs. These simple but revolutionary changes mean that the more valuable classes of slave are healthier, on average, than any group of human beings has ever been.");
+ r.toNode("p", ["note"]);
+
+ r.push("Naturally, fetishism, competitiveness, and leisure have intersected to create in the Free Cities a constant escalation of physical one-upmanship when it comes to the training of slaves. Wonderfully muscled specimens have become very common, with feats of athletic prowess cited alongside sexual accomplishments without any distinction. The arcology owners most", App.Encyclopedia.Dialog.linkDOM("devoted", "From Rebellious to Devoted", "hotpink"), "to the human form are creating societies of uniform physical perfection unlike anything in human history.");
+ r.toNode("p", ["note"]);
+ App.Events.addNode(t, ["— Lawrence, J. K., and Bolingbroke, D. S.,", App.UI.DOM.makeElement("span","Trends in Free Cities Culture, 2031", ["underline"]), App.UI.DOM.makeElement("span","Journal of Modern Social Sciences, International Edition, February 2032", ["note"])], "p", ["indent", "note"]);
+
+	return t;
+}, "Lore");
+
+App.Encyclopedia.addArticle("Faith in the Free Cities", function() {
+	const t = new DocumentFragment();
+ const r = new SpacedTextAccumulator(t);
+ r.push("I recognize my faults;");
+ r.toNode("div", ["note"]);
+ r.push("I am always conscious of my sins.");
+ r.toNode("div", ["note"]);
+ r.push("I have sinned against you, Master and God,");
+ r.toNode("div", ["note"]);
+ r.push("And done what you consider evil.");
+ r.toNode("div", ["note"]);
+ r.push("So you are right in judging me;");
+ r.toNode("div", ["note"]);
+ r.push("You are justified in condemning me.");
+ r.toNode("div", ["note"]);
+ App.Events.addNode(t, ["— Anonymous slave, 2030"], "div", ["indent", "note"]);
+
+ r.push("There are almost as many approaches to faith in the Free Cities as there are arcologies. For every arcology owner who cynically exploits religion, there is another who truly believes himself to be ordained by God as master of his fellow human beings. Nevertheless, common elements are identifiable. The most notorious arise from literal readings of scriptural passages that reference slavery.");
+ r.toNode("p", ["note"]);
+
+ r.push("Each of the three major monotheistic religions arose in a time and place where slavery was common. Thus the institution appears in all three of the great monotheistic holy books. It is childishly simple to find all the scriptural support for a reintroduction of slavery even the most illiberal arcology owner could desire in any one of these. This is presumably not what religious conservatives of the late 20th and early 21st centuries intended when advocating scriptural literalism.");
+ r.toNode("p", ["note"]);
+ App.Events.addNode(t, ["— Lawrence, J. K., and Bolingbroke, D. S.,", App.UI.DOM.makeElement("span","Trends in Free Cities Culture, 2031", ["underline"]), App.UI.DOM.makeElement("span","Journal of Modern Social Sciences, International Edition, February 2032", ["note"])], "p", ["indent", "note"]);
+
+	return t;
+}, "Lore");
+
+App.Encyclopedia.addArticle("Slave Whore, Arcology K-2", function() {
+	const t = new DocumentFragment();
+ const r = new SpacedTextAccumulator(t);
+ r.push("Interview with a slave whore");
+	r.toNode("div");
+ r.push(`"The Rose Petal," Arcology K-2, April 21, 2036`);
+ r.toNode("div");
+
+ r.push("Good afternoon. What's your name?");
+ r.toNode("p", ["note"]);
+ r.push("Um, what? Are, um, you going to fuck me? I mean, whatever you want to do is okay.");
+ r.toNode("div");
+
+ r.push("I'd like to learn more about you.");
+ r.toNode("p", ["note"]);
+ r.push("Um, okay. My name is Candace Ass, I'm twenty years old, and I'm one of the slave whores here at the Petal. Um, what else?");
+ r.toNode("div");
+
+ r.push("How did you become a slave? Tell me about how you got here.");
+ r.toNode("p", ["note"]);
+ r.push("Sure. Well, uh, it's kind of boring. I was at a club, and I guess someone put something in my drink, and I passed out, and well [laughs nervously] here I am, I guess?");
+ r.toNode("div");
+
+ r.push("What happened when you woke up?");
+ r.toNode("p", ["note"]);
+ r.push("Oh, like, you want me to tell you my life story?");
+ r.toNode("div");
+
+ r.push("Sure.");
+ r.toNode("p", ["note"]);
+ r.push("Would it be okay if you fucked me while I tell you? I, uh, can't really think right now. I guess I could also suck — but then I wouldn't be able to talk? Here, please, please stick — oh, okay. Okay! Uh. Yeah. [giggles] That feels better. Thanks!");
+ r.toNode("div");
+
+ r.push("Why couldn't you talk without being fucked?");
+ r.toNode("p", ["note"]);
+ r.push("Well, we're all really horny. I'm really horny. Everything does it. The hormones, and all the training, and the drugs, and it's also kind of a habit, you know? It's been almost an hour! If you do it slow like that I'll be okay. [giggles] Yeah. Thank you!");
+ r.toNode("div");
+
+ r.push("You can touch yourself if it helps you think more clearly.");
+ r.toNode("p", ["note"]);
+ r.push("Oh thanks but, um, no. That's okay. It's actually really sensitive. Like, um, nobody touches it? And we're not allowed to do that alone anyway. So this is, um, good for me. I'm used to it, I get off like this a lot. If you do it much harder I'll cum, but if you just do it like that, I'll edge for a while. Um, so we can talk? Is that what you wanted?");
+ r.toNode("div");
+
+ r.push("You were telling me about being enslaved.");
+ r.toNode("p", ["note"]);
+ r.push("Well, I woke up with a guy on top of me. Kind of like now! But, like, he was really pounding me. It kind of hurt, but I was still really drugged. And I was already on the slave drugs too. And then they put me through a bunch of tests and stuff. That first buttfuck wasn't really a test, it was just a slaver using me. All the new girls get used. But later they tested me a lot, and showed me a bunch of porn and stuff. I think it was to see what I liked. Then they put me in a little room, like a cell, and kept me there for a while.");
+ r.toNode("div");
+
+ r.push("How long were you there?");
+ r.toNode("p", ["note"]);
+ r.push("I don't really know? All I really did was sleep. It's what happens when you're getting a lot of drugs and need curatives to keep them from hurting you. You just sleep a lot. And when you're awake, you're really groggy and can't remember much. It makes it easier.");
+ r.toNode("div");
+
+ r.push("It makes what easier?");
+ r.toNode("p", ["note"]);
+ r.push("Being raped. I mean, um, that was before I was trained a lot? So I didn't like it most of the time guys fucked me in the ass. But I just laid there and let it happen mostly. I heard from girls later that the slave market I was at uses that as a test, actually.");
+ r.toNode("div");
+
+ r.push("A test of what?");
+ r.toNode("p", ["note"]);
+ r.push("Well if a new girl is all drugged up and, you know, gets hard and cums when they fuck her, she gets special treatment. A girl they caught with me, I think she came the first day, and she's, like, a Concubine now? But if a girl still fights on all the drugs they put her in the arcade. Most just lie there like me, which means they need better hormones. So then they clip you.");
+ r.toNode("div");
+
+ r.push("Perform an orchiectomy, you mean?");
+ r.toNode("p", ["note"]);
+ r.push("Yeah, cut your balls off. [giggles] I don't remember. I just noticed one day that I was really soft and they were gone. And then I started getting really soft and growing better boobs, and the slavers who came in and used me seemed cuter. I asked one of he wanted a blowjob, and then they took me out and trained me a little.");
+ r.toNode("div");
+
+ r.push("Sexual training?");
+ r.toNode("p", ["note"]);
+ r.push("No, no, just obedience and stuff. I mean, they trained me by making me suck cock and bend over and take it up the butt, but no, like, sex classes. But still mostly sleeping. It's like, I would wake up being fucked, and when the guy was done and had injected whatever into me and made me follow a few commands, I'd go shower and then go back to bed again. Weeks and weeks like that, and then some surgeries.");
+ r.toNode("div");
+
+ r.push("What surgeries have you had?");
+ r.toNode("p", ["note"]);
+ r.push("Lots! [giggles] Um, lip implants. [kissing noise] Obviously. And some little face stuff, like, bone stuff on my jaw and cheekbones. They did something to my throat, and after not letting me talk for a week my voice was high like it is now. Shoulders and hips, more bone stuff. Those hurt, I slept for like a week after each and they left me alone. Butt implants. And boobs, like, obviously. Three times, bigger each time. If they give you the big kind right away you get stretch marks and it's ugly. They say they're going to do it at least once more, so they're bigger than my head. [giggles]");
+ r.toNode("div");
+
+ r.push("When did you move to the brothel?");
+ r.toNode("p", ["note"]);
+ r.push("Well Mistress bought me! I think they decided I was ready to be sold when I started asking for sex. They fuck you regularly, like, it's on a schedule? To get you into the habit, and also to get your asshole used to being a fuckhole. And I started wanting it more than the schedule, and cumming almost every time. So they sold me. Mistress kept me for a week, and then sent me down to the brothel.");
+ r.toNode("div");
+
+ r.push("What was that week like?");
+ r.toNode("p", ["note"]);
+ r.push("Um, I'm not supposed to talk about that? But, um, she fucked me, of course. That's not a big secret. Most sex slaves on the drugs and the training and stuff need sex, like, a lot. So if we're serving only one person, we have to beg. It's nice working here, I don't have to beg much. Oh! And that's also when Mistress picked my name and style. Since my skin is so pale, and my asshole bleached to pink, I'm pink! Pink hair, pink lips, pink nails, pink collar, pink heels, pink asspussy. Candy Ass!");
+ r.toNode("div");
+
+ r.push("How long have you been here?");
+ r.toNode("p", ["note"]);
+ r.push("Well, ever since Mistress sent me here! So like a year?");
+ r.toNode("div");
+
+ r.push("Do you know what you'll be doing in the future?");
+ r.toNode("p", ["note"]);
+ r.push("Um what? Working here I guess? I don't understand.");
+ r.toNode("div");
+
+ r.push("How long do you think you'll be here?");
+ r.toNode("p", ["note"]);
+ r.push("Well I guess the oldest girl here is around forty? [giggles] She's nice, I like her. She has these huge soft boobs, and her milk is really nice. So I'm twenty, so twenty years I guess?");
+ r.toNode("div");
+
+ r.push("How many customers do you see a day?");
+ r.toNode("p", ["note"]);
+ r.push("It depends, like, it depends on what they want? Like a long fuck or something weird like you, it takes a while, but most just want me to suck them off or take their cock up my butthole. Fifteen maybe?");
+ r.toNode("div");
+
+ r.push("That means you're going to have sex in this brothel more than 100,000 times.");
+ r.toNode("p", ["note"]);
+ r.push("The way you say that make it sound like a lot. Oh! Oh, uh, you want me to -");
+ r.toNode("div");
+
+ r.push("Be quiet, slave.");
+ r.toNode("p", ["note"]);
+
+ r.push("— Lawrence, W. G.,", App.UI.DOM.makeElement("span","Guide to Modern Slavery, 2037 Edition", ["note"]));
+ r.toNode("p");
+ r.push("Appendix A, Interviews");
+ r.toNode("div");
+
+	return t;
+}, "Lore");
+
+App.Encyclopedia.addArticle("Slave Acolyte, Arcology V-7", function() {
+	const t = new DocumentFragment();
+ const r = new SpacedTextAccumulator(t);
+ r.push("Interview with a Chattel Religionist acolyte");
+ r.toNode("div");
+ r.push("Main plaza, Arcology V-7, April 28, 2036");
+ r.toNode("div");
+ r.push("Good morning, honored visitor! I'm Patience; how may I serve you?");
+ r.toNode("p");
+
+ r.push(App.UI.DOM.makeElement("span","Good morning. What do you do here?", ["note"]));
+ r.toNode("div");
+ r.push("Why, I am an acolyte of the Prophet! I have the ordained and undeserved glory of being one of his slaves. I do my unworthy best to do whatever he in his infinite wisdom commands me. Today I am a public servant on the plaza, and it is my duty and pleasure to greet visitors to his arcology, Sir, and to serve them in whatever way I can.");
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","You seem very enthusiastic.", ["note"]));
+ r.toNode("div");
+ r.push("Oh thank you Sir! The Prophet says that the best slave is beautiful and cheerful, but if a slave cannot be both, it is much better for her to be cheerful. [laughs] So I do my best to be cheerful. May I ask what brings you to his arcology, Sir?");
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","You may. I travel from arcology to arcology. A tourist, you might say. And I write about what I find.", ["note"]));
+ r.toNode("div");
+ r.push("That's wonderful! I'd be happy to share anything with you, anything at all. The Prophet says that all slavery is holy, but Sir, I think his arcology must be more holy than most. And the Prophet says that acolytes are to always be honest, for the holy have nothing to hide.");
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","I see that.", ["note"]));
+ r.toNode("div");
+ r.push("[laughs] My habit, you mean? You must be joking, Sir! It covers most of me.");
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","Tell me about it.", ["note"]));
+ r.toNode("div");
+ r.push("With pleasure, Sir. It is white, because all sex slaves are pure. It covers my head and my shoulders but leaves my face bare so that everyone may see me smile. My breasts are bare because, the Prophet says, they are especially holy things, beautiful, and sexual, and nourishing. They must also be bare so that all can see how they are pure and unspoiled by false implants. My belly is bare to show that I have the very great honor of carrying new slaves for the Prophet. I have a golden belt with a strip of cloth in front and behind, because the Prophet says that sometimes, the imagined sight of a slave's holes are as beautiful as the true sight of them.");
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","You must be carrying twins.", ["note"]));
+ r.toNode("div");
+ r.push("Yes, Sir, twins. I hope very much to be blessed with triplets next time.");
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","Are they the Prophet's?", ["note"]));
+ r.toNode("div");
+ r.push("[laughs] Oh, no, Sir! I am just an unworthy old acolyte, not one of the Prophet's wives. I was blessed with the seed of one of the Prophet's breeding girls, much better seed than I deserve. She is young and very beautiful, much more beautiful than me, and many acolytes receive her seed so they can make beautiful new slaves.");
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","Between your pregnancy and your breasts, doesn't standing out here on the plaza tire you out?", ["note"]));
+ r.toNode("div");
+ r.push("No, Sir. Look here, Sir; [turns sideways] a good acolyte has strong legs, and I exercise twice a day. We must be strong to bear new slaves, work hard, and give pleasure without tiring. I can serve you standing, Sir, even like this. May I show you?");
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","Perhaps later. You seem proud of your body.", ["note"]));
+ r.toNode("div");
+ r.push("I am! The Prophet says that a holy slave may certainly be proud of the way in which she serves. I am not beautiful and I am not young, but I am healthy and strong and I am proud of that. I am blessed to be in an arcology where I can take pride in such things.");
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","What do you do when you are not being bred or serving in public?", ["note"]));
+ r.toNode("div");
+ r.push("Well, Sir, those are my roles as one of the Prophet's many slave acolytes. In daily life, do you mean, Sir? Well, as I said I exercise a great deal. To maintain my body I must eat a lot, so I have to work hard or I will become fat. Other than that, I live up above us, Sir, in a lower level of the Prophet's penthouse, in a room with my wife. It's a simple life.");
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","Your wife?", ["note"]));
+ r.toNode("div");
+ r.push("Yes, Sir, my wife Perseverance. There she is, Sir, on the other side of the plaza. One of the ones dressed like me. She has bigger boobs, but she isn't as pregnant right now. [points]");
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","She looks a lot like you.", ["note"]));
+ r.toNode("div");
+ r.push("Well, she should, Sir, we're sisters. The Prophet says that slave marriages between sisters are very holy, as long as no seed passes between them, and of course no seed can pass between us, because we both have pussies. I love her very much.");
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","Did you always?", ["note"]));
+ r.toNode("div");
+ r.push("Well yes! Oh, I see, Sir. No, no not that way. It was very hard for us, for a long time, but the Prophet is very wise. We were unworthy and slow to accept his wisdom, but he was patient with us and we learned in the end.");
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","That's certainly impressive. How did he teach you?", ["note"]));
+ r.toNode("div");
+ r.push("Many ways, of course, Sir, but the Prophet is so wise that he often brings slaves to teach themselves by his wisdom. He has many ways of filling a slave with radiant sexual desire, Sir, so many ways, and they are so powerful, that she must find some way of getting relief. And the Prophet provided that we were each other's only source of relief.");
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","How was that hard for you?", ["note"]));
+ r.toNode("div");
+ r.push("The Prophet says that it is natural for it to be hard, and as in all things he was right. We were ashamed, and we cried afterward, every time, for a long time. But we became accustomed to each other's bodies, and we saw that many sister-wives were happy, and no one looked down on us. So we agreed with each other to stop being ashamed.");
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","You're completely comfortable speaking about being married to your sister, here in the plaza?", ["note"]));
+ r.toNode("div");
+ r.push("Sir, I'm completely comfortable saying here in the plaza that when I awoke this morning, she was sucking the milk from one of my nipples, and that we brought each other to orgasm twice before we came out to the plaza today. I love her! I hope you will let us serve you together.");
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push("— Lawrence, W. G.,", App.UI.DOM.makeElement("span","Guide to Modern Slavery, 2037 Edition", ["note"]));
+ r.toNode("div");
+ r.push("Appendix A, Interviews");
+ r.toNode("div");
+
+	return t;
+}, "Lore");
+
+App.Encyclopedia.addArticle("Public Slave, Arcology A-3", function() {
+	const t = new DocumentFragment();
+ const r = new SpacedTextAccumulator(t);
+ r.push("Interview with a public slave subject to Degradationism");
+ r.toNode("div");
+ r.push("Main plaza, Arcology A-3, April 16, 2036");
+ r.toNode("div");
+ r.push("P-please, Sir! Please fuck me, Sir!");
+ r.toNode("p");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","Very well. I will ask, though: why?", ["note"]));
+ r.toNode("div");
+ r.push("B-because I'm overdue, Sir. If I d-don't get someone to f-fuck me soon, my c-collar will hurt me, Sir. Oh please, oh — oh thank you Sir, please, please — oh, OH —");
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push("[Some time later.]");
+ r.toNode("div");
+ r.push("[Slave collar chimes.]");
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","What was that?", ["note"]));
+ r.toNode("div");
+ r.push("Oh, um, [sniff] Sir, the arcology detected that you came inside me, Sir. That means that I have a little time before I have to get fucked again, Sir. [sniff]");
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","All public slaves are subject to this system?", ["note"]));
+ r.toNode("div");
+ r.push("All of the Mistress's public slaves, Sir. Some other owners use it, some don't. [sniff] It's s-supposed to make us g-good public representatives for the arcology's slaves. B-because it makes us d-desperate. [sniff] Sir.");
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","You seem articulate, slave. What were you before enslavement?", ["note"]));
+ r.toNode("div");
+ r.push("I was a s-student, Sir.");
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","I see. Slave, I would like to learn more about the arcology. You will accompany me as I tour it. If you answer my questions as I do so, I will fuck you when your collar requires it.", ["note"]));
+ r.toNode("div");
+ r.push("Oh, thank you, Sir. Thank you. Um, how long will you be here, Sir?");
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","None of your concern. Who is the person in that cage hanging there?", ["note"]));
+ r.toNode("div");
+ r.push("I don't know, Sir. And, Sir, that's not, um, a person. She's a slave, Sir.");
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","I see. What sorts of things are punished that way?", ["note"]));
+ r.toNode("div");
+ r.push("Oh, lots of things, Sir. Hesitating. Dropping things. Touching a dick or a clit with teeth. Letting cum spill. Anyone can put a slave in one of the cages; they're public, Sir, and anyone can use a slave in them. You see they're kind of shaped so that the slave is positioned so her holes are sticking out, Sir?");
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","Follow me.", ["note"]));
+ r.toNode("div");
+ r.push("Yes, Sir. [winces] Oh. Um, sorry, Sir.");
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","Does it hurt to walk in those shoes?", ["note"]));
+ r.toNode("div");
+ r.push("N-no, Sir. I need the heels to walk. It's the chain between my nipples that hurts a little when I walk, Sir, and it bounces around. I was wincing, earlier, partly because I was bouncing around, and it hurt, Sir.");
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","And yet you orgasmed.", ["note"]));
+ r.toNode("div");
+ r.push("It's h-hard not to, Sir. I have a smart piercing that makes me orgasm, Sir.");
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","Why do you need heels to walk?", ["note"]));
+ r.toNode("div");
+ r.push("Because my tendons have been clipped, Sir.");
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","What did you do?", ["note"]));
+ r.toNode("div");
+ r.push("Um, nothing, Sir? It wasn't a punishment, all slaves have their tendons clipped. The heels are a reward. If we're not good, we have to crawl, Sir.");
+ r.toNode("div");
+
+ r.push("[Walking.]");
+ r.toNode("p");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","Was that fear I just saw?", ["note"]));
+ r.toNode("div");
+ r.push("Yes, Sir.");
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","Why?", ["note"]));
+ r.toNode("div");
+ r.push("That's the main dairy ahead of us, Sir.");
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","Is it open to the public?", ["note"]));
+ r.toNode("div");
+ r.push("T-t-to view, yes, Sir.");
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","Follow me.", ["note"]));
+ r.toNode("div");
+ r.push("Y-yes, Sir. [sniff]");
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","That is quite an impressive sight.", ["note"]));
+ r.toNode("div");
+ r.push("Yes, Sir.");
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","Do you know how large they are?", ["note"]));
+ r.toNode("div");
+ r.push("Th-th-their breasts, Sir? About t-twenty or twenty five liters e-ea-each, S-Sir.");
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","Why does this frighten you so much?", ["note"]));
+ r.toNode("div");
+ r.push("W-well, I'll, um, be put in here, Sir. Someday. Oh. [sniff]");
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","Why?", ["note"]));
+ r.toNode("div");
+ r.push("All slaves are p-put in h-here, when they're loose, Sir. All the, the, the", App.UI.DOM.makeElement("span","sex,", ["note"]), "it's just to loosen us, s-so those", App.UI.DOM.makeElement("span","things,", ["note"]), "will fit inside...");
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push("— Lawrence, W. G.,", App.UI.DOM.makeElement("span","Guide to Modern Slavery, 2037 Edition", ["note"]));
+ r.toNode("div");
+ r.push("Appendix A, Interviews");
+ r.toNode("div");
+
+	return t;
+}, "Lore");
+
+App.Encyclopedia.addArticle("Mercenary, Arcology B-2", function() {
+	const t = new DocumentFragment();
+ const r = new SpacedTextAccumulator(t);
+ r.push("Interview with a Free Cities mercenary");
+ r.toNode("div");
+ r.push("The Wild Goose, Arcology B-2, March 11, 2036");
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","Good evening.", ["note"]));
+ r.toNode("div");
+ r.push("No offense, but I only fuck girls.");
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","None taken, and I'm just looking for conversation.", ["note"]));
+ r.toNode("div");
+ r.push("'k, buy the next round and converse away.");
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","Done. Fine to meet you. I'm touring the arcologies, writing a book. I'd like to ask you about life as a mercenary here in the Free Cities.", ["note"]));
+ r.toNode("div");
+ r.push("[laughs] Shit, I'm going to be famous.");
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","If you'd like to be. I'm W.G.; what's your name?", ["note"]));
+ r.toNode("div");
+ r.push("Well, W.G., I'll answer questions for your book, but I don't actually want to be famous. No names.");
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","That works fine for me. How did you become a mercenary?", ["note"]));
+ r.toNode("div");
+ r.push("I was a soldier, and the pay was shit, so instead of re-upping I went merc. Boring, but pretty common, believe me. Half the old world militaries are just merc training camps now. You enlist, and then you get out as soon as you have enough experience that a mercenary group'll take you on.");
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","Did you have combat experience?", ["note"]));
+ r.toNode("div");
+ r.push("[laughs] You know your shit. No, no I did not. I wasn't even infantry. Dirty little secret you probably already know: if you're a girl, most merc groups don't give a fuck what experience you actually have, 'cause either way, they win.");
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","I think I understand, but lay it out for me.", ["note"]));
+ r.toNode("div");
+ r.push("If you're a good troop, you're a good troop and they come out ahead. Rifle don't care what equipment the merc holding it has. If you're not a good troop, they tie you up in a shipping container, use you 'till they get bored, and then sell you. And they come out ahead. Win-win.");
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","You obviously came out on the right side of that, but did you suffer any abuse before then?", ["note"]));
+ r.toNode("div");
+ r.push("Nah. It'd be dumb to do anything to a newbie and then not enslave 'em. What, you're gonna rape somebody and then give 'em two-forty rounds, four frags, and a satchel charge? Fuck no.");
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","That's what you carry?", ["note"]));
+ r.toNode("div");
+ r.push("Yeah fuck that subject anyway. And yeah, when taking prisoners isn't on the agenda. I'm a big girl, I can manage eight mags in a double deck chest rig. If we are taking prisoners, then swap out half the frags for gas and half the mags for an underslung S. G. with beanbags and taser rounds. Though you never want to use any of that, nonlethals included.");
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","Because you might damage the merchandise?", ["note"]));
+ r.toNode("div");
+ r.push("Because you might damage the merchandise. Did you know it's possible to burst an implant with a beanbag round? Well, it's possible to burst an implant with a beanbag round.");
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","You know I have to ask about that now.", ["note"]));
+ r.toNode("div");
+ r.push("And I wouldn't have said it if I didn't want to tell the story. Not a long one anyway. Old world mob boss asshole with a moored yacht full of hoes, all tats and fake tits and shit. We went in quick without enough muscle and the guards resisted. Perfect op is, you go in so heavy that nobody resists, but it was rushed and we had to put 'em down. So all these bitches are running around screaming their heads off and we get the call that the police are coming. Didn't want to shoot it out with them since the tip came from a cop in the first place. So we had a couple of minutes to grab what we could and jet. So, beanbags, zipties, bodybags, and off — we — go, one hoe apiece.");
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","That sounds risky.", ["note"]));
+ r.toNode("div");
+ r.push("Yeah it was. I'm not some hothead who does shit like that for the rush. If you run that op once a week you're going to be dead inside a year. I found new employers not long after that one. Funny story and all, but if I hadn't gone with ceramic side plates in my vest that night I would have been fucked.");
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","This is a quieter outfit?", ["note"]));
+ r.toNode("div");
+ r.push("Much. Writer, I am now bored. And since I am drunk, and horny, and an incorrigible dyke, I am going to go find a cute slave with freckles and make her eat my pussy until I pass out. You want the other end?");
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push("— Lawrence, W. G.,", App.UI.DOM.makeElement("span","Guide to Modern Slavery, 2037 Edition", ["note"]));
+ r.toNode("div");
+ r.push("Appendix A, Interviews");
+ r.toNode("div");
+
+	return t;
+}, "Lore");
+
+App.Encyclopedia.addArticle("Slave Trainer, Arcology D-10", function() {
+	const t = new DocumentFragment();
+ const r = new SpacedTextAccumulator(t);
+ r.push("Interview and observation with a Free Cities slave trainer");
+ r.toNode("div");
+ r.push("Slave Market training plaza, Arcology D-10, May 23, 2036");
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span", "Good morning! I'm Lawrence, W.G. Lawrence.", ["bold"]));
+ r.toNode("div");
+ r.push(App.UI.DOM.makeElement("span","Hello. Nice to meet you. I'm Claudia.", ["note"]));
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span", "I'd like to thank you for being willing to have me along as an observer; it's very kind of you.", ["bold"]));
+ r.toNode("div");
+ r.push(App.UI.DOM.makeElement("span","My pleasure. I do good work and I don't mind people knowing it.", ["note"]));
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span", "May I ask you a few questions before you get back to your routine?", ["bold"]));
+ r.toNode("div");
+ r.push(App.UI.DOM.makeElement("span","Sure. We're going to be working with a new slave today, and I've got her in my office, sitting and thinking. There's no rush. Unpredictability is good.", ["note"]));
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","What got you into this career?", ["bold"]));
+ r.toNode("div");
+ r.push(App.UI.DOM.makeElement("span","Well, I'm an ex-slave. I served my Mistress, the owner of this arcology, for three years. But I'm getting things out of order. I was a Sister before that. That's a very long story. Do you want to get into that? Every single Sister has the same story. [laughs] That's the beauty of it.", ["note"]));
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","That's all right. You mentioned before that you'd like to be known for what you're doing now.", ["bold"]));
+ r.toNode("div");
+ r.push(App.UI.DOM.makeElement("span","Yeah. I'm not ashamed of any of it, and I wouldn't be where I am without it, but I'm my own woman now.", ["note"]));
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","And you became your own woman after retiring from slavery here?", ["bold"]));
+ r.toNode("div");
+ r.push(App.UI.DOM.makeElement("span","I did, yes. It was bittersweet, but it was time. Mistress prefers young ladies.", ["note"]));
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","You keep referring to her as Mistress. Is that leftover conditioning?", ["bold"]));
+ r.toNode("div");
+ r.push(App.UI.DOM.makeElement("span","[laughs] No, no, that's just what I call her, you know? She'll always be my Mistress in a way. And again, I'm here because she retires her girls incredibly well.", ["note"]));
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","What was your role with her?", ["bold"]));
+ r.toNode("div");
+ r.push(App.UI.DOM.makeElement("span","I was her Head Girl, for my last year with her, at least. Before that, her Head Girl's girl. That Head Girl was a Sister, too. I can introduce you, if you'd like; she's a trainer here too. We work together sometimes.", ["note"]));
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","Was that a blush?", ["bold"]));
+ r.toNode("div");
+ r.push(App.UI.DOM.makeElement("span","Okay, okay! We spend time together after work sometimes, too. Anyway, slave training. Come with me, my office is back this way.", ["note"]));
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","Who are you training today?", ["bold"]));
+ r.toNode("div");
+ r.push(App.UI.DOM.makeElement("span","New slave, just bought her from the kidnappers yesterday. Pretty average. Mid-twenties, student then housewife. Decent tits, but too chubby. We'll work on that. And here we are.", ["note"]));
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","Impressive office, even from the outside.", ["bold"]));
+ r.toNode("div");
+ r.push(App.UI.DOM.makeElement("span","Thanks. So, she's in there. Room's soundproof, she can't hear us. Here's how I'd like to play this: just stay out of the light, and you can observe as long as you like. She's under a spotlight, and everything else is dark. She probably won't even know you're there.", ["note"]));
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","That would work very well, thank you.", ["bold"]));
+ r.toNode("div");
+ r.push(App.UI.DOM.makeElement("span","You're welcome. After you.", ["note"]));
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","Hello, Suzanne.", ["note"]));
+ r.toNode("div");
+ r.push("H-hi, Ma'am.");
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","Stand up.", ["note"]));
+ r.toNode("div");
+ r.push("Yes, Ma'am. Um, Ma'am, may I please have my pants back? They took them away in the market, and I thought since you gave my sweater back, you'd -");
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","Be quiet.", ["note"]));
+ r.toNode("div");
+ r.push("Yes, Ma'am.");
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","Hold your hands at your sides like I told you, and stop pulling your sweater down over your pussy.", ["note"]));
+ r.toNode("div");
+ r.push("Y-yes, Ma'am.");
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","Turn around.", ["note"]));
+ r.toNode("div");
+ r.push("Yes, Ma'am.");
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","Do you like having your big fat naked butt hanging out, bitch?", ["note"]));
+ r.toNode("div");
+ r.push("Yes, Ma — aaAAH! Oh, ow, oh my God, ow -");
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","Be quiet. That was a 2. Your collar goes to 10.", ["note"]));
+ r.toNode("div");
+ r.push("[sobbing] Yes, Ma'am.");
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","You just lied to me. I will ask again: do you like having your big fat naked butt hang out?", ["note"]));
+ r.toNode("div");
+ r.push("N-no, Ma'am.");
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","Take your sweater off. Good bitch. That's right, blush for me. Now, tear it in half.", ["note"]));
+ r.toNode("div");
+ r.push("What!? Oh please, no, please no, I'll do it! Please don't shock me again, Ma'am! [frantic tearing]");
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","You don't need clothes, bitch. Not anymore. Now, turn back around, and bend over.", ["note"]));
+ r.toNode("div");
+ r.push("Yes, Ma'am.");
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","Spread your big fat buttcheeks.", ["note"]));
+ r.toNode("div");
+ r.push("Yes, Ma'am.");
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","Ever had a cock up your butthole, Suzie?", ["note"]));
+ r.toNode("div");
+ r.push("[sobbing]");
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push("— Lawrence, W. G.,", App.UI.DOM.makeElement("span","Guide to Modern Slavery, 2037 Edition", ["note"]));
+ r.toNode("div");
+ r.push("Appendix A, Interviews");
+ r.toNode("div");
+
+	return t;
+}, "Lore");
+
+App.Encyclopedia.addArticle("Monarch, Arcology F-8", function() {
+	const t = new DocumentFragment();
+ const r = new SpacedTextAccumulator(t);
+ r.push(`Interview with a Free Cities "anarcho-monarch"`);
+ r.toNode("div");
+ r.push("Arcological Penthouse, Arcology F-8, June 23, 2036");
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","Good afternoon. My name is -", ["note"]));
+ r.toNode("div");
+ r.push("(From Guard) You will address His Highness with proper courtesy, peasant.");
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","Ah, my apologies. What I meant to say was, your Majesty, my name is W.G. Lawrence, and I'd like to interview you about this arcology, and your role in leading it. Err, for my book, your Highness.", ["note"]));
+ r.toNode("div");
+ r.push("A scribe. Well, speak quickly. I am a busy man.");
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","Of course. Just for the record, might you introduce yourself?", ["note"]));
+ r.toNode("div");
+ r.push("(Gestures to a guard.)");
+ r.toNode("div");
+ r.push("(From Guard) You are speaking with His Highness King William, First of His name, Savior of the Arcology, Executive Lord and Master of the Board of Directors, Majority Shareholder and Anarcho-Monarch of the most noble Arcology of Feight.");
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","Yes, yes, right, quite a magnificent title. Might I ask how it came to be that a Monarch took control of a Free City? Isn't strong authority antithetical to the free cities ideal?", ["note"]));
+ r.toNode("div");
+ r.push("[laughs] Not a monarch, an anarcho-monarch. I did not earn my titles through bullying or force, and certainly not through inheriting it from some decrepit geriatric moron like in the old world. I am the legitimate majority stakeholder of the arcology and the rightful head of its board of directors. My rule is strong because I am strong. Were I to become weak, my position would be ousted and the people would take my place directly.");
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","Is that what the 'anarcho' means?", ["note"]));
+ r.toNode("div");
+ r.push("Mmm. I do not simply rule the people. I am the people.");
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","But you dictate laws down to them - isn't that mutally contradictory?", ["note"]));
+ r.toNode("div");
+ r.push("No. Peasants do not understand how to govern themselves. Look at the 'pure' anarchies outside our walls, scribe, and you'll see men tearing each other apart for scraps on a bone or a chance with an emaciated crack-whore. Without a strong force to bind a society in place, society falls apart entirely. If my people dislike paying my rents or obeying my Knights, they are free to leave, and take their chances in the ruins of the Old World.");
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","So your majority ownership and management of the arcology gives you the right to control its populace, who live under the laws you set, and if they disagree with your, ah, symbolic totality, their only option is to leave?", ["note"]));
+ r.toNode("div");
+ r.push("Now you understand.");
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","Alright. Well, what about the lesser nobles? The Counts and Barons and Knights of the arcology?", ["note"]));
+ r.toNode("div");
+ r.push("What about them?");
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","Why do they have the right to authority in your free society?", ["note"]));
+ r.toNode("div");
+ r.push("They are my representatives. To be a Knight is to have my personal trust to act in my name, wherever I cannot be. I am the fountain from which all authority stems. So long as my water flows pure, all steps of the fountain remain clear.");
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push(App.UI.DOM.makeElement("span","What about corruption? Doesn't giving so much power to entrenched nobility make it more likely that -", ["note"]));
+ r.toNode("div");
+ r.push("(From Guard) Alright, that's enough out of you. The King has better things to do than explain his policies all day. Let's go.");
+ r.toNode("div");
+
+ r.toNode("p");
+ r.push("— Lawrence, W. G.,", App.UI.DOM.makeElement("span","Guide to Modern Slavery, 2037 Edition", ["note"]));
+ r.toNode("div");
+ r.push("Appendix A, Interviews");
+ r.toNode("div");
+
+	return t;
+}, "Lore");
+
+App.Encyclopedia.addCategory("Lore", function() {
+ const f = new DocumentFragment();
+ let r = [];
+ if (V.encyclopedia !== "Lore") {
+  r.push(App.Encyclopedia.Dialog.linkDOM("Lore"));
+ }
+ r.push(App.Encyclopedia.Dialog.linkDOM("Money", "Money", "yellowgreen"));
+ r.push(App.Encyclopedia.Dialog.linkDOM("Food"));
+ r.push(App.Encyclopedia.Dialog.linkDOM("Disease in the Free Cities"));
+ r.push(App.Encyclopedia.Dialog.linkDOM("Free Cities Justice"));
+ r.push(App.Encyclopedia.Dialog.linkDOM("Modern Anal"));
+ r.push(App.Encyclopedia.Dialog.linkDOM("Slave Couture"));
+ r.push(App.Encyclopedia.Dialog.linkDOM("Slave Marriage"));
+ r.push(App.Encyclopedia.Dialog.linkDOM("The Ejaculate Market"));
+ r.push(App.Encyclopedia.Dialog.linkDOM("Gingering"));
+ r.push(App.Encyclopedia.Dialog.linkDOM("Dyes"));
+ App.Events.addNode(f, ["The Free Cities today:", App.UI.DOM.generateLinksStrip(r)], "div");
+
+ r = [];
+ r.push(App.Encyclopedia.Dialog.linkDOM("The New Rome"));
+ r.push(App.Encyclopedia.Dialog.linkDOM("The Return of Feudalism"));
+ r.push(App.Encyclopedia.Dialog.linkDOM("Naked, Barefoot, and Pregnant"));
+ r.push(App.Encyclopedia.Dialog.linkDOM("The Sons of Sekhmet"));
+ r.push(App.Encyclopedia.Dialog.linkDOM("The Top"));
+ r.push(App.Encyclopedia.Dialog.linkDOM("The Bottom"));
+ r.push(App.Encyclopedia.Dialog.linkDOM("The Purity of the Human Form"));
+ r.push(App.Encyclopedia.Dialog.linkDOM("A World Built on Implants"));
+ r.push(App.Encyclopedia.Dialog.linkDOM("Slaves as Stock"));
+ r.push(App.Encyclopedia.Dialog.linkDOM("Slavery and the Physical Ideal"));
+ r.push(App.Encyclopedia.Dialog.linkDOM("Faith in the Free Cities"));
+ App.Events.addNode(f, ["Free Cities culture tomorrow:", App.UI.DOM.generateLinksStrip(r)], "div");
+
+ r = [];
+ r.push(App.Encyclopedia.Dialog.linkDOM("Slave Whore, Arcology K-2"));
+ r.push(App.Encyclopedia.Dialog.linkDOM("Slave Acolyte, Arcology V-7"));
+ if (V.seeExtreme !== 0) {
+  r.push(App.Encyclopedia.Dialog.linkDOM("Public Slave, Arcology A-3"));
+ }
+ r.push(App.Encyclopedia.Dialog.linkDOM("Mercenary, Arcology B-2"));
+ r.push(App.Encyclopedia.Dialog.linkDOM("Slave Trainer, Arcology D-10"));
+ r.push(App.Encyclopedia.Dialog.linkDOM("Monarch, Arcology F-8"));
+ App.Events.addNode(f, ["Interviews:", App.UI.DOM.generateLinksStrip(r)], "div");
+
+ return f;
+});
diff --git a/src/gui/Encyclopedia/encyclopediaObtainingSlaves.js b/src/gui/Encyclopedia/encyclopediaObtainingSlaves.js
index c382498555f3b14441e13fd774d7a11c993176a4..7eae18635b02dd2195576d9a9386180f78ca724e 100644
--- a/src/gui/Encyclopedia/encyclopediaObtainingSlaves.js
+++ b/src/gui/Encyclopedia/encyclopediaObtainingSlaves.js
@@ -93,7 +93,7 @@ App.Encyclopedia.addArticle("Discarded Slaves", function() {
 
 	r = [];
 	r.push("These slaves which have lost their value are often simply culled from the owners' herds, but may also be sold through");
-	r.push(App.Encyclopedia.Dialog.linkDOM("the Flesh Heap", "The Flesh Heap"));
+	r.push(App.Encyclopedia.Dialog.linkDOM("the Flesh Heap"));
 	r.push("as discount merchandise for new or cash-strapped slaveowners who can wring some final use out of them. Their new owners may end up using them as discount whores,");
 	r.push(App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("living sex toys", "Fuckdolls"), ","));
 	r.push("or for medical testing.");
@@ -149,17 +149,17 @@ App.Encyclopedia.addArticle("Wetware CPUs", function() {
 
 App.Encyclopedia.addCategory("obtainingSlaves", function() {
 	const r = [];
-	r.push(App.Encyclopedia.Dialog.linkDOM("Kidnapped Slaves", "Kidnapped Slaves"));
-	r.push(App.Encyclopedia.Dialog.linkDOM("Slave Schools", "Slave Schools"));
-	r.push(App.Encyclopedia.Dialog.linkDOM("Stables", "Stables"));
-	r.push(App.Encyclopedia.Dialog.linkDOM("Household Liquidations", "Household Liquidations"));
-	r.push(App.Encyclopedia.Dialog.linkDOM("Direct Sales", "Direct Sales"));
-	r.push(App.Encyclopedia.Dialog.linkDOM("Pre-Owned Slaves", "Pre-Owned Slaves"));
-	r.push(App.Encyclopedia.Dialog.linkDOM("Random Events", "Random Events"));
-	r.push(App.Encyclopedia.Dialog.linkDOM("Discarded Slaves", "Discarded Slaves"));
-	r.push(App.Encyclopedia.Dialog.linkDOM("The Flesh Heap", "The Flesh Heap"));
-	r.push(App.Encyclopedia.Dialog.linkDOM("The Job Fulfillment Center", "The Job Fulfillment Center"));
-	r.push(App.Encyclopedia.Dialog.linkDOM("Wetware CPUs", "Wetware CPUs"));
-	r.push(App.Encyclopedia.Dialog.linkDOM("The Corporation", "The Corporation"));
+	r.push(App.Encyclopedia.Dialog.linkDOM("Kidnapped Slaves"));
+	r.push(App.Encyclopedia.Dialog.linkDOM("Slave Schools"));
+	r.push(App.Encyclopedia.Dialog.linkDOM("Stables"));
+	r.push(App.Encyclopedia.Dialog.linkDOM("Household Liquidations"));
+	r.push(App.Encyclopedia.Dialog.linkDOM("Direct Sales"));
+	r.push(App.Encyclopedia.Dialog.linkDOM("Pre-Owned Slaves"));
+	r.push(App.Encyclopedia.Dialog.linkDOM("Random Events"));
+	r.push(App.Encyclopedia.Dialog.linkDOM("Discarded Slaves"));
+	r.push(App.Encyclopedia.Dialog.linkDOM("The Flesh Heap"));
+	r.push(App.Encyclopedia.Dialog.linkDOM("The Job Fulfillment Center"));
+	r.push(App.Encyclopedia.Dialog.linkDOM("Wetware CPUs"));
+	r.push(App.Encyclopedia.Dialog.linkDOM("The Corporation"));
 	return App.UI.DOM.generateLinksStrip(r);
 });
diff --git a/src/gui/Encyclopedia/encyclopediaRelatedLinks.tw b/src/gui/Encyclopedia/encyclopediaRelatedLinks.tw
index 8db038e2585d1392aaa289d088c79f51d878106a..d38f1e337e6d48b0b71ab1d9cfaffda4d7baa804 100644
--- a/src/gui/Encyclopedia/encyclopediaRelatedLinks.tw
+++ b/src/gui/Encyclopedia/encyclopediaRelatedLinks.tw
@@ -152,15 +152,6 @@ INFLATION
 	| <<= App.Encyclopedia.Dialog.linkSC("Cervix Micropump Filter", "Cervix Micropump Filter")>>
 	| <<= App.Encyclopedia.Dialog.linkSC("Organic Mesh Breast Implant", "Organic Mesh Breast Implant")>>
 
-/**********
-SLAVE MODIFICATION
-**********/
-<<case "Slave Modification">>
-	<<= App.Encyclopedia.Dialog.linkSC("Slave Modification", "Slave Modification")>>
-	| <<= App.Encyclopedia.Dialog.linkSC("Corrective Diet", "Corrective Diet")>>
-	| <<= App.Encyclopedia.Dialog.linkSC("Nipple Conversion — Penetratable", "Nipple Conversion — Penetratable")>>
-	| <<= App.Encyclopedia.Dialog.linkSC("Ejaculation Boosting Prostate Implant", "Ejaculation Boosting Prostate Implant")>>
-
 /**********
 ARCOLOGY FACILITIES
 **********/
@@ -187,52 +178,6 @@ ARCOLOGY FACILITIES
 	<<= App.Encyclopedia.Dialog.linkSC("Advertising", "Advertising")>>
 	| <<= App.Encyclopedia.Dialog.linkSC("Variety", "Variety")>>
 
-/**********
-LORE: THE FREE CITIES TODAY
-**********/
-<<case "Lore" "Money" "Food" "Disease in the Free Cities" "Free Cities Justice" "Modern Anal" "Slave Couture" "Slave Marriage" "The Ejaculate Market" "Gingering" "Dyes"
-/**********
-LORE: FREE CITIES CULTURE TOMORROW
-**********/
-"The New Rome" "The Return of Feudalism" "Naked, Barefoot, and Pregnant" "The Sons of Sekhmet" "The Top" "The Bottom" "The Purity of the Human Form" "A World Built on Implants" "Slaves as Stock" "Slavery and the Physical Ideal" "Faith in the Free Cities"
-/**********
-LORE: INTERVIEWS
-**********/
-"Slave Whore, Arcology K-2" "Slave Acolyte, Arcology V-7" "Public Slave, Arcology A-3" "Mercenary, Arcology B-2" "Slave Trainer, Arcology D-10" "Monarch, Arcology F-8">>
-	//The Free Cities today://
-	@@.yellowgreen; <<= App.Encyclopedia.Dialog.linkSC("Money", "Money")>>@@
-	| <<= App.Encyclopedia.Dialog.linkSC("Disease in the Free Cities", "Disease in the Free Cities")>>
-	| <<= App.Encyclopedia.Dialog.linkSC("Free Cities Justice", "Free Cities Justice")>>
-	| <<= App.Encyclopedia.Dialog.linkSC("Modern Anal", "Modern Anal")>>
-	| <<= App.Encyclopedia.Dialog.linkSC("Slave Couture", "Slave Couture")>>
-	| <<= App.Encyclopedia.Dialog.linkSC("Slave Marriage", "Slave Marriage")>>
-	| <<= App.Encyclopedia.Dialog.linkSC("The Ejaculate Market", "The Ejaculate Market")>>
-	| <<= App.Encyclopedia.Dialog.linkSC("Gingering", "Gingering")>>
-	| <<= App.Encyclopedia.Dialog.linkSC("Dyes", "Dyes")>>
-
-	<br>//Free Cities culture tomorrow://
-	<<= App.Encyclopedia.Dialog.linkSC("The New Rome", "The New Rome")>>
-	| <<= App.Encyclopedia.Dialog.linkSC("The Return of Feudalism", "The Return of Feudalism")>>
-	| <<= App.Encyclopedia.Dialog.linkSC("Naked, Barefoot, and Pregnant", "Naked, Barefoot, and Pregnant")>>
-	| <<= App.Encyclopedia.Dialog.linkSC("The Sons of Sekhmet", "The Sons of Sekhmet")>>
-	| <<= App.Encyclopedia.Dialog.linkSC("The Top", "The Top")>>
-	| <<= App.Encyclopedia.Dialog.linkSC("The Bottom", "The Bottom")>>
-	| <<= App.Encyclopedia.Dialog.linkSC("The Purity of the Human Form", "The Purity of the Human Form")>>
-	| <<= App.Encyclopedia.Dialog.linkSC("A World Built on Implants", "A World Built on Implants")>>
-	| <<= App.Encyclopedia.Dialog.linkSC("Slaves as Stock", "Slaves as Stock")>>
-	| <<= App.Encyclopedia.Dialog.linkSC("Slavery and the Physical Ideal", "Slavery and the Physical Ideal")>>
-	| <<= App.Encyclopedia.Dialog.linkSC("Faith in the Free Cities", "Faith in the Free Cities")>>
-
-	<br>//Interviews://
-	<<= App.Encyclopedia.Dialog.linkSC("Slave Whore, Arcology K-2", "Slave Whore, Arcology K-2")>>
-	| <<= App.Encyclopedia.Dialog.linkSC("Slave Acolyte, Arcology V-7", "Slave Acolyte, Arcology V-7")>>
-	<<if $seeExtreme != 0>>
-		| <<= App.Encyclopedia.Dialog.linkSC("Public Slave, Arcology A-3", "Public Slave, Arcology A-3")>>
-	<</if>>
-	| <<= App.Encyclopedia.Dialog.linkSC("Mercenary, Arcology B-2", "Mercenary, Arcology B-2")>>
-	| <<= App.Encyclopedia.Dialog.linkSC("Slave Trainer, Arcology D-10", "Slave Trainer, Arcology D-10")>>
-	| <<= App.Encyclopedia.Dialog.linkSC("Monarch, Arcology F-8", "Monarch, Arcology F-8")>>
-
 /**********
 MODS
 **********/
diff --git a/src/gui/Encyclopedia/encyclopediaSlaves.js b/src/gui/Encyclopedia/encyclopediaSlaves.js
index 251dcd201c62b3ff32222b36d04c933b1f114dcb..dc9ab1a76989d270a9ce3960ffa913a5480f5327 100644
--- a/src/gui/Encyclopedia/encyclopediaSlaves.js
+++ b/src/gui/Encyclopedia/encyclopediaSlaves.js
@@ -139,7 +139,7 @@ App.Encyclopedia.addArticle("Health", function() {
 	App.UI.DOM.appendNewElement("h3", f, "Illness");
 	r = [];
 	r.push("Whether we like it or not, sometimes slaves get sick. Most of the time an illness will be nothing more than a minor inconvenience that clears up by the end of the week, but occasionally a slave might catch something that is best handled with the help of a");
-	r.push(App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("Clinic", "Clinic"), "."));
+	r.push(App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("Clinic"), "."));
 	r.push("Keeping slaves in good condition goes a long way to preventing too many issues, but one thing to be aware of is that chemical carcinogen buildup is particularly dangerous and can cause illnesses to become quite serious. A simple illness may be harmless but once a slave is seriously ill their condition will rapidly deteriorate.");
 	App.Events.addParagraph(f, r);
 	r = [];
@@ -298,18 +298,18 @@ App.Encyclopedia.addArticle("Menial Slaves", function() {
 	r = [];
 	r.push(App.Encyclopedia.topic("Fuckdolls"));
 	r.push("are slaves immured in permanent latex suits with holes over their orifices, turning them into living sex toys. They are more valuable than menial slaves proper, mostly due to the cost of the various compliance and drug components of the suits, which make them quite expensive. The weekly profit from owning Fuckdolls can be improved though a policy unlocked by");
-	r.push(App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("Degradationism", "Degradationism"), "."));
+	r.push(App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("Degradationism"), "."));
 	r.push("Normal menials can be converted into Fuckdolls if an upgraded");
-	r.push(App.Encyclopedia.Dialog.linkDOM("Arcade", "Arcade"));
+	r.push(App.Encyclopedia.Dialog.linkDOM("Arcade"));
 	r.push("is available.");
 	App.Events.addParagraph(f, r);
 
 	r = [];
 	r.push(App.Encyclopedia.topic("Standard Bioreactors"));
 	r.push("are slaves who are permanently attached to the arcology for industrial use, which can vary from milking to drug testing to organ farming. They are slightly less valuable than menial slaves proper. The weekly profit from owning Bioreactors can be improved though a policy unlocked by");
-	r.push(App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("Pastoralism", "Pastoralism"), "."));
+	r.push(App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("Pastoralism"), "."));
 	r.push("Normal menials can be converted into Bioreactors if an industrialized");
-	r.push(App.Encyclopedia.Dialog.linkDOM("Dairy", "Dairy"));
+	r.push(App.Encyclopedia.Dialog.linkDOM("Dairy"));
 	r.push("is available.");
 	App.Events.addParagraph(f, r);
 
@@ -367,7 +367,7 @@ App.Encyclopedia.addArticle("Slave Score (Sexual)", function() {
 	r.push("is a derived stat used to determine a slave's performance at many assignments. It also plays a major role in her price if bought or sold. It's a rough measure, but it's intended to serve as an estimate of the average price she would command as a street whore over the course of a week. The number of your arcology citizens who might be willing to pay that price is determined by her");
 	r.push(App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("Attractiveness Score", "Slave Score (Attractiveness)"), "."));
 	r.push("Sexual Score is affected by sexual skills, some physical traits,");
-	r.push(App.Encyclopedia.Dialog.linkDOM("Health", "Health"));
+	r.push(App.Encyclopedia.Dialog.linkDOM("Health"));
 	r.push("and");
 	r.push(App.Encyclopedia.Dialog.linkDOM("devotion,", "From Rebellious to Devoted", "devotion accept"));
 	r.push("and societal tastes.");
@@ -378,21 +378,21 @@ App.Encyclopedia.addArticle("Slave Score (Sexual)", function() {
 
 App.Encyclopedia.addCategory("slaves", function() {
 	const r = [];
-	r.push(App.Encyclopedia.Dialog.linkDOM("Enslaving People", "Enslaving People"));
-	r.push(App.Encyclopedia.Dialog.linkDOM("Living Conditions", "Living Conditions"));
-	r.push(App.Encyclopedia.Dialog.linkDOM("Health", "Health"));
+	r.push(App.Encyclopedia.Dialog.linkDOM("Enslaving People"));
+	r.push(App.Encyclopedia.Dialog.linkDOM("Living Conditions"));
+	r.push(App.Encyclopedia.Dialog.linkDOM("Health"));
 	r.push(App.Encyclopedia.Dialog.linkDOM("Devotion", "Devotion", "devotion accept"));
 	r.push(App.Encyclopedia.Dialog.linkDOM("Trust", "Trust", "trust careful"));
-	r.push(App.Encyclopedia.Dialog.linkDOM("From Rebellious to Devoted", "From Rebellious to Devoted"));
-	r.push(App.Encyclopedia.Dialog.linkDOM("Drugs and Their Effects", "Drugs and Their Effects"));
-	r.push(App.Encyclopedia.Dialog.linkDOM("Gender", "Gender"));
-	r.push(App.Encyclopedia.Dialog.linkDOM("Nymphomania", "Nymphomania"));
-	r.push(App.Encyclopedia.Dialog.linkDOM("Indentured Servants", "Indentured Servants"));
-	r.push(App.Encyclopedia.Dialog.linkDOM("Menial Slaves", "Menial Slaves"));
-	r.push(App.Encyclopedia.Dialog.linkDOM("Fuckdolls", "Fuckdolls"));
-	r.push(App.Encyclopedia.Dialog.linkDOM("Lingua Franca", "Lingua Franca"));
+	r.push(App.Encyclopedia.Dialog.linkDOM("From Rebellious to Devoted"));
+	r.push(App.Encyclopedia.Dialog.linkDOM("Drugs and Their Effects"));
+	r.push(App.Encyclopedia.Dialog.linkDOM("Gender"));
+	r.push(App.Encyclopedia.Dialog.linkDOM("Nymphomania"));
+	r.push(App.Encyclopedia.Dialog.linkDOM("Indentured Servants"));
+	r.push(App.Encyclopedia.Dialog.linkDOM("Menial Slaves"));
+	r.push(App.Encyclopedia.Dialog.linkDOM("Fuckdolls"));
+	r.push(App.Encyclopedia.Dialog.linkDOM("Lingua Franca"));
 	r.push(App.Encyclopedia.Dialog.linkDOM("Slave Score (Attractiveness)", "Slave Score (Attractiveness)"));
 	r.push(App.Encyclopedia.Dialog.linkDOM("Slave Score (Sexual)", "Slave Score (Sexual)"));
-	r.push(App.Encyclopedia.Dialog.linkDOM("Demand for Sex", "Demand for Sex"));
+	r.push(App.Encyclopedia.Dialog.linkDOM("Demand for Sex"));
 	return App.UI.DOM.generateLinksStrip(r);
 });
diff --git a/src/gui/quicklinks.js b/src/gui/quicklinks.js
index fcb8fb65676412a8d9f21108a15f4baa921391f1..8b1a5b37b696191731f4a363c9a8310ed6968976 100644
--- a/src/gui/quicklinks.js
+++ b/src/gui/quicklinks.js
@@ -196,7 +196,7 @@ App.UI.quickMenu = (function() {
 	let hotkeysEnabled = false;
 
 	// register hotkeys
-	// this is in it's own scope as we can forget the hotkeys object immediately afterwards
+	// this is in its own scope as we can forget the hotkeys object immediately afterwards
 	{
 		// setup hotkeys list, upper/lower case is important!
 		const hotkeys = cleanPassageMapping({
diff --git a/src/interaction/policies/policies.js b/src/interaction/policies/policies.js
index c07cdea812037630ca95664cbdf6de8dfec84bda..6075feea5b6015ddd959bc2d60acbb221c287df2 100644
--- a/src/interaction/policies/policies.js
+++ b/src/interaction/policies/policies.js
@@ -91,7 +91,7 @@ globalThis.policy = function(category) {
 		 * @returns {Node} Link to repeal.
 		 */
 		function repeal(p) {
-			const frag = new DocumentFragment;
+			const frag = new DocumentFragment();
 			let check = canAfford();
 			let link;
 			if (!(p.hasOwnProperty("hide") && p.hide.button === 1)) {
@@ -129,7 +129,7 @@ globalThis.policy = function(category) {
 		 */
 		function implement(p, enable) {
 			let check = canAfford();
-			const frag = new DocumentFragment;
+			const frag = new DocumentFragment();
 			const linkArray = [];
 			let link;
 			if (check === true) {
diff --git a/src/interaction/siRecords.js b/src/interaction/siRecords.js
index 0d6f302ebd6aff881c21d18470d4ce15cd2ecd25..8581fc8610adfc5f236f543f2e0809c099df23d2 100644
--- a/src/interaction/siRecords.js
+++ b/src/interaction/siRecords.js
@@ -254,7 +254,7 @@ App.UI.SlaveInteract.records = function(slave, refresh) {
 			const innerDiv = document.createElement("div");
 
 			innerDiv.append(
-				`${slave.slaveName} has ${other.length > 0 ? `been fucked by ${toSentence(other)}, as well as `: `slept with`}`,
+				`${slave.slaveName} has ${other.length > 0 ? `been fucked by ${toSentence(other)}, as well as `: `slept with `}`,
 				ownedSlavesSpan
 			);
 
@@ -267,14 +267,16 @@ App.UI.SlaveInteract.records = function(slave, refresh) {
 				link,
 				`so far.`,
 			);
-		} else if (other.length === 0) {
-			text.push(`${He} hasn't had sex with anyone yet.`);
 		}
 
 		if (other.length > 0) {
 			text.push(`${He} has ${slaves.length > 0 ? `also` : `only`} had sex with ${toSentence(other)}.`);
 		}
 
+		if (V.showSexualHistory === 1 && V.ui !== "start") {
+			text.push(App.Desc.sexualHistory(slave));
+		}
+
 		App.Events.addNode(div, text);
 
 		return div;
diff --git a/src/js/DefaultRules.js b/src/js/DefaultRules.js
index 6f5d9ae3ed73463b0d6677aba98a49c71d3dd4ef..99ae07b0a0ff1f1c87a0481d7da6f7a07c22bef4 100644
--- a/src/js/DefaultRules.js
+++ b/src/js/DefaultRules.js
@@ -584,7 +584,7 @@ globalThis.DefaultRules = function(slave) {
 			if (slave.vaginalAccessory !== rule.vaginalAccessory) {
 				slave.vaginalAccessory = rule.vaginalAccessory;
 				switch (slave.vaginalAccessory) {
-					case "huge dildo":
+					case "huge dildo": {
 						const m = `${slave.slaveName} has been given a`;
 						if (slave.vagina >= 2) {
 							message(`${m} massive dildo to permanently gape ${his} cunt.`, sourceRecord.vaginalAccessory);
@@ -593,6 +593,7 @@ globalThis.DefaultRules = function(slave) {
 							slave.vaginalAccessory = "large dildo";
 						}
 						break;
+					}
 
 					case "long dildo":
 						if (slave.breedingMark === 1 && V.propOutcome === 1 && V.eugenicsFullControl !== 1 && V.arcologies[0].FSRestart !== "unset") {
diff --git a/src/js/releaseRules.js b/src/js/releaseRules.js
index 0ab23091ca913840ac003803512602a45c3f3d55..d6671c9e866ab31f1137a9f44988997b69dbcd5a 100644
--- a/src/js/releaseRules.js
+++ b/src/js/releaseRules.js
@@ -84,6 +84,24 @@ App.Utils.hasNonassignmentSex = function hasNonassignmentSex(slave) {
 	return (slave.rules.release.slaves === 1) || this.hasFamilySex(slave) || this.hasPartnerSex(slave);
 };
 
+/**
+ * Returns true if the slave has an assignment that requires them to have sex.
+ * @param {FC.SlaveState} slave
+ * @returns {boolean}
+ */
+App.Utils.hasAssignmentSex = function hasAssignmentSex(slave) {
+	return [Job.PUBLIC, Job.WHORE, Job.BROTHEL, Job.CLUB, Job.GLORYHOLE, Job.ARCADE, Job.FUCKTOY, Job.MASTERSUITE, Job.SUBORDINATE].includes(slave.assignment);
+};
+
+/**
+ * Returns true if the slave is to remain completely chaste.
+ * @param {FC.SlaveState} slave
+ * @returns {boolean}
+ */
+App.Utils.isChaste = function isChaste(slave) {
+	return !App.Utils.hasNonassignmentSex(slave) && !App.Utils.hasAssignmentSex(slave) && !App.Utils.sexAllowed(slave, V.PC);
+};
+
 /**
  * Returns true if there is any restriction at all on how a slave may choose to get off.
  * @param {App.Entity.SlaveState} slave
diff --git a/src/js/slaveListing.js b/src/js/slaveListing.js
index 935ad0682be9fbd760154bf8867eb6ab1c82d285..615eda64ac15e4674e83f2219b43b0f1ad5ce9d8 100644
--- a/src/js/slaveListing.js
+++ b/src/js/slaveListing.js
@@ -49,6 +49,8 @@ App.UI.SlaveList.render = function() {
 		if ((V.seeImages === 1) && (V.seeSummaryImages === 1)) {
 			batchRenderer = new App.Art.SlaveArtBatch(IDs, 1);
 			res.appendChild(batchRenderer.writePreamble());
+		} else {
+			batchRenderer = null;
 		}
 
 		if (V.useSlaveListInPageJSNavigation === 1) {
diff --git a/src/js/utilsPC.js b/src/js/utilsPC.js
index 0ab4d364ffdca840f6e86ab0696a4ff7948751e2..8b07f63737a90bf554d3a1b3899b87b9d9ebfba2 100644
--- a/src/js/utilsPC.js
+++ b/src/js/utilsPC.js
@@ -123,7 +123,7 @@ globalThis.PCTitle = function() {
 	}
 
 	if (V.SF.Toggle && V.SF.FS.Tension > 100) {
-		switch (V.SF.FS.BadOutcome) {
+		switch (App.Mods.SF.fsIntegration.crisis()[1]) {
 			case 'MIGRATION':
 				titles.push("The Abandoned");
 				break;
@@ -715,7 +715,7 @@ globalThis.PCCareerTier = function(career = V.PC.career) {
 	}
 	console.log(`"${career}" not found in App.Data.player.career`);
 	return "master";
-}
+};
 
 /** Identifies which category the PC's career is in
  * @param {string} [career]
@@ -729,4 +729,4 @@ globalThis.PCCareerCategory = function(career = V.PC.career) {
 	}
 	console.log(`"${career}" not found in App.Data.player.career`);
 	return career;
-}
+};
diff --git a/src/js/utilsSlave.js b/src/js/utilsSlave.js
index 5c0255124656bc26372cbfd1fdfc3f94ff3adbac..1c7a54d01530ac32eeb5d6f00d07140c2f9077ae 100644
--- a/src/js/utilsSlave.js
+++ b/src/js/utilsSlave.js
@@ -958,7 +958,7 @@ globalThis.randomCareer = function(slave) {
 /**
  * @param {FC.HumanState} slave
  */
-globalThis.resyncSlaveHight = function(slave) {
+globalThis.resyncSlaveHeight = function(slave) {
 	slave.height = Height.random(slave);
 };
 
@@ -966,7 +966,7 @@ globalThis.resyncSlaveHight = function(slave) {
  * @param {App.Entity.SlaveState} slave
  */
 globalThis.resyncSlaveToAge = function(slave) {
-	resyncSlaveHight(slave);
+	resyncSlaveHeight(slave);
 	slave.pubertyXX = slave.actualAge < slave.pubertyAgeXX ? 0 : 1;
 	slave.pubertyXY = slave.actualAge < slave.pubertyAgeXY ? 0 : 1;
 	if (slave.actualAge < 12) {
@@ -1473,7 +1473,7 @@ globalThis.newSlave = function(slave) {
 		V.REReductionCheckinIDs.push(slave.ID);
 	}
 
-	/* special case for MB slave genetic intellignece in slave acquisition */
+	/* special case for MB slave genetic intelligence in slave acquisition */
 	if (slave.savedIntelligence !== undefined) {
 		slave.intelligence = slave.savedIntelligence;
 	}
@@ -3189,3 +3189,19 @@ App.Utils.showSlaveChanges = function(edited, original, dispatch, crumb = "") {
 globalThis.stretchedAnusSize = function(dickSize) {
 	return /** @type {FC.AnusType} */ (Math.clamp(dickSize, 0, 4));
 };
+
+/** Determines whether an outfit passes Chattel Religionism's strictest cultural clothing requirements (either base or Holy Nudism)
+ * @param {FC.Clothes} outfit
+ * @returns {boolean}
+ */
+globalThis.ChattelReligionistClothingPass = function(outfit) {
+	const clothes = App.Data.clothes.get(outfit);
+	const fsLovesClothes = clothes && clothes.fs && clothes.fs.loves && clothes.fs.loves.has("FSChattelReligionist");
+	const fsToleratesClothes = clothes && clothes.fs && clothes.fs.tolerates && clothes.fs.tolerates.has("FSChattelReligionist");
+
+	if (V.arcologies[0].FSChattelReligionistLaw2 === 1) {
+		return clothes.exposure === 4 || (clothes.exposure === 3 && (fsLovesClothes || fsToleratesClothes));
+	} else {
+		return fsLovesClothes;
+	}
+};
diff --git a/src/markets/theMarket/tradeMenials.js b/src/markets/theMarket/tradeMenials.js
index aebf1ed099390c54ef86808578df64fee3413c43..276e2ea29aee3ae8eb18bc475a4b5890c6881d08 100644
--- a/src/markets/theMarket/tradeMenials.js
+++ b/src/markets/theMarket/tradeMenials.js
@@ -64,8 +64,8 @@ App.UI.tradeMenials = function(menialWorkersOnly) {
 		}
 		if (V.cheatMode && V.cheatModeM) {
 			const menDemand = function() {
-				const el = new DocumentFragment;
-				App.UI.DOM.appendNewElement("span", el, `Slave Demand`, `yellowgreen`);
+				const el = new DocumentFragment();
+				App.UI.DOM.appendNewElement("span", el, `Slave Demand`, ["yellowgreen"]);
 				el.append(`| ${V.menialDemandFactor}`);
 				return el;
 			};
@@ -122,7 +122,7 @@ App.UI.tradeMenials = function(menialWorkersOnly) {
 
 		if (V.cheatMode && V.cheatModeM) {
 			const menSupply = function() {
-				const el = new DocumentFragment;
+				const el = new DocumentFragment();
 				App.UI.DOM.appendNewElement("span", el, `Slave Supply`, `yellowgreen`);
 				el.append(`| ${V.menialSupplyFactor}`);
 				return el;
diff --git a/src/npc/descriptions/longSlave.js b/src/npc/descriptions/longSlave.js
index 6350447f62091ee744d7cf0496fba32fbb038150..6dcd140be03fcc8bd111a511b485a0b821a84318 100644
--- a/src/npc/descriptions/longSlave.js
+++ b/src/npc/descriptions/longSlave.js
@@ -181,10 +181,6 @@ App.Desc.longSlave = function(slave, {descType, market = 0, marketText, noArt} =
 		}
 
 		r.push(App.Desc.geneticQuirkAssessment(slave));
-
-		if (V.showSexualHistory === 1 && V.ui !== "start") {
-			r.push(App.Desc.sexualHistory(slave));
-		}
 	}
 
 	r.push(App.Desc.mind(slave, descType));
diff --git a/src/npc/generate/heroCreator.js b/src/npc/generate/heroCreator.js
index 8c0c6cb7adeeed2dded23e8e9f866fc090ebbeda..2f821c29c9e139d788cf4354e69d1bfc48e6919a 100644
--- a/src/npc/generate/heroCreator.js
+++ b/src/npc/generate/heroCreator.js
@@ -141,53 +141,41 @@ App.Utils.getHeroSlave = function(heroSlave) {
 
 	SetBellySize(newSlave);
 
-	/* special slaves exceptions to keep siblings sensible */
-	if (newSlave.mother === -9999 && newSlave.father === -9998) {
-		/* The twins — Camille & Kennerly */
-		for (let k = 0; k < V.slaves.length; k++) {
-			if (areSisters(V.slaves[k], newSlave) > 0) {
-				newSlave.actualAge = V.slaves[k].actualAge;
-				newSlave.physicalAge = newSlave.actualAge;
-				newSlave.visualAge = newSlave.actualAge;
-				newSlave.ovaryAge = newSlave.actualAge;
-				newSlave.birthWeek = V.slaves[k].birthWeek;
-			}
+	let slave; 	// special slaves exceptions to keep siblings sensible
+	if (newSlave.mother === -9999 && newSlave.father === -9998) { // The twins — Camille & Kennerly
+		slave = V.slaves.find(s => areSisters(s, newSlave) > 0);
+		if (slave) {
+			newSlave.actualAge = slave.actualAge;
+			newSlave.physicalAge = newSlave.actualAge;
+			newSlave.visualAge = newSlave.actualAge;
+			newSlave.ovaryAge = newSlave.actualAge;
+			newSlave.birthWeek = slave.birthWeek;
 		}
 	}
-	if (newSlave.mother === -9997 && newSlave.father === -9996) {
-		/* The siblings — Elisa & Martin */
-		for (let k = 0; k < V.slaves.length; k++) {
-			if (areSisters(V.slaves[k], newSlave) > 0) {
-				if (newSlave.birthName === "Elisa") {
-					newSlave.actualAge = V.slaves[k].actualAge - 1;
-					newSlave.physicalAge = newSlave.actualAge;
-					newSlave.visualAge = newSlave.actualAge;
-					newSlave.ovaryAge = newSlave.actualAge;
-				} else if (newSlave.birthName === "Martin") {
-					newSlave.actualAge = V.slaves[k].actualAge + 1;
-					newSlave.physicalAge = newSlave.actualAge;
-					newSlave.visualAge = newSlave.actualAge;
-					newSlave.ovaryAge = newSlave.actualAge;
-				}
+	if (newSlave.mother === -9997 && newSlave.father === -9996) { // The siblings — Elisa & Martin
+		slave = V.slaves.find(s => areSisters(s, newSlave) > 0);
+		if (slave) {
+			if (newSlave.birthName === "Elisa") {
+				newSlave.actualAge = slave.actualAge - 1;
+			} else if (newSlave.birthName === "Martin") {
+				newSlave.actualAge = slave.actualAge + 1;
 			}
+			newSlave.physicalAge = newSlave.actualAge;
+			newSlave.visualAge = newSlave.actualAge;
+			newSlave.ovaryAge = newSlave.actualAge;
 		}
 	}
-	if (newSlave.mother === -9995 && newSlave.father === -9994) {
-		/* The fruit siblings — Green & Purple Grape */
-		for (let k = 0; k < V.slaves.length; k++) {
-			if (areSisters(V.slaves[k], newSlave) > 0) {
-				if (newSlave.birthName === "Green Grape") {
-					newSlave.actualAge = V.slaves[k].actualAge - 5;
-					newSlave.physicalAge = newSlave.actualAge;
-					newSlave.visualAge = newSlave.actualAge;
-					newSlave.ovaryAge = newSlave.actualAge;
-				} else if (newSlave.birthName === "Purple Grape") {
-					newSlave.actualAge = V.slaves[k].actualAge + 5;
-					newSlave.physicalAge = newSlave.actualAge;
-					newSlave.visualAge = newSlave.actualAge;
-					newSlave.ovaryAge = newSlave.actualAge;
-				}
+	if (newSlave.mother === -9995 && newSlave.father === -9994) { // The fruit siblings — Green & Purple Grape
+		slave = V.slaves.find(s => areSisters(s, newSlave) > 0);
+		if (slave) {
+			if (newSlave.birthName === "Green Grape") {
+				newSlave.actualAge = slave.actualAge - 5;
+			} else if (newSlave.birthName === "Purple Grape") {
+				newSlave.actualAge = slave.actualAge + 5;
 			}
+			newSlave.physicalAge = newSlave.actualAge;
+			newSlave.visualAge = newSlave.actualAge;
+			newSlave.ovaryAge = newSlave.actualAge;
 		}
 	}
 
diff --git a/src/npc/startingGirls/startingGirls.js b/src/npc/startingGirls/startingGirls.js
index ff060db4081b54e06e7ba90b3d9b629f8c2bcb4b..9584f33b8b09b12e6812079d89d435dd1a21c7a1 100644
--- a/src/npc/startingGirls/startingGirls.js
+++ b/src/npc/startingGirls/startingGirls.js
@@ -716,7 +716,7 @@ App.StartingGirls.physical = function(slave, cheat = false) {
 	option = options.addCustomOption(`Average height for a ${slave.physicalAge} year old is ${heightToEitherUnit(Height.mean(slave))}`)
 		.addButton(
 			"Make average",
-			() => resyncSlaveHight(slave),
+			() => resyncSlaveHeight(slave),
 			""
 		);
 	if (cheat) {
diff --git a/src/personalAssistant/assistantAppearance.js b/src/personalAssistant/assistantAppearance.js
index af6159c952b935278f8e8fc38f914fefe3aadf35..0eedd33ff069bf1d93dd6b8f944652ecdbcae3fe 100644
--- a/src/personalAssistant/assistantAppearance.js
+++ b/src/personalAssistant/assistantAppearance.js
@@ -114,7 +114,7 @@ globalThis.PersonalAssistantAppearance = function() {
 				r.push(`with long flowing hair, tribal tattoos, shredded abs, and bone jewelry. ${HeA} has bigger natural tits than anyone that ripped could possibly maintain.`);
 			}
 			if (V.cockFeeder === 1 && paSeed === 1) {
-				r.push(`A recognizable little representation of one of your slaves is down on ${hisU} knees in front of ${himA}, eating ${himA} out. The slave must be down in the kitchen, getting a meal out of the food dispensers. As you watch, the amazon orgasms, producing a little female barbarian shout.`);
+				r.push(`A recognizable little representation of one of your slaves is down on ${hisU} knees in front of ${himA}, eating ${himA} out. The slave must be down in the kitchen, getting a meal out of the food dispensers. As you watch, the amazon orgasms, producing a feminine little barbarian shout.`);
 			} else if (V.suppository === 1 && paSeed === 2) {
 				r.push(`A recognizable little representation of one of your slaves is down on ${hisU} knees in front of ${himA}, letting the amazon use two fingers on ${hisU} butthole. The slave must be receiving ${hisU} drugs from one of the dildo dispensers. As you watch, the amazon looks up at you, winks, and shoves ${hisA} entire hand up the struggling slave's ass.`);
 			} else if (masturbationAllowed === 1 && paSeed === 3) {
@@ -126,35 +126,35 @@ globalThis.PersonalAssistantAppearance = function() {
 			} else if (paSeed === 6 && V.studio === 1) {
 				r.push(`The amazon has ${hisA} hand inside a recognizable little representation of one of your slaves, and is using a handheld camera to film the action, gonzo style. The slave must be using one of the penthouse's many vibrators, and ${V.assistant.name} is clearly turning the feed of it into porn.`);
 			} else if (paSeed === 7 && V.assistant.market) {
-				r.push(`${HeA}'s accompanied by your market assistant's tribes ${womanM} avatar.`);
+				r.push(`${HeA}'s accompanied by your market assistant's tribes${womanM} avatar.`);
 				if (V.assistant.market.relationship === "cute") {
 					r.push(`They're chatting companionably as ${V.assistant.name} stretches and the market assistant's avatar does a complex calculation on ${hisM} fingers. ${V.assistant.name} is telling a long story, and the market assistant is listening kindly.`);
 				} else if (V.assistant.market.relationship === "nonconsensual") {
-					r.push(`${V.assistant.name} is taking ${hisA} tribal slave from behind. It's technically tribbing, since all ${heA}'s doing is grinding ${hisA} cunt against the market assistant's, but the poor little tribes ${womanM} is being fucked hard regardless.`);
+					r.push(`${V.assistant.name} is taking ${hisA} tribal slave from behind. It's technically tribbing, since all ${heA}'s doing is grinding ${hisA} cunt against the market assistant's, but the poor little tribes${womanM} is being fucked hard regardless.`);
 				} else if (V.assistant.market.relationship === "incestuous") {
 					r.push(`${V.assistant.name} is getting some manual stimulation from ${hisA} ${sisterM}, who is watching ${hisM} muscular sibling's aroused thrashing with amusement as ${heM} slides ${hisM} whole hand in and out of ${V.assistant.name}'s cunt.`);
 				} else {
-					r.push(`They're doing it in the missionary position, kissing deeply. They're technically tribbing, but ${V.assistant.name}'s muscular body and the tribes ${womanM}'s ${wifeM}ly form make it look very pure and traditional.`);
+					r.push(`They're doing it in the missionary position, kissing deeply. They're technically tribbing, but ${V.assistant.name}'s muscular body and the tribes${womanM}'s ${wifeM}ly form make it look very pure and traditional.`);
 				}
 			} else {
 				r.push(`${HeA}'s doing push-ups, glancing at you at the top of each rep to see if you need ${himA}. When ${heA} sees your attention, ${heA} pushes hard enough to bounce to a standing position. Seeing that you're just looking, ${heA} winks, flexes, and drops back down to do crunches.`);
 			}
 			break;
 		case "businesswoman":
-			r.push(`${HeA}'s a cute little ${assistantRace()} business ${womanA}`);
+			r.push(`${HeA}'s a cute little ${assistantRace()} business${womanA}`);
 			if (V.assistant.fsOptions && V.assistant.fsAppearance !== "default") {
 				r.push(FSfunc());
 			} else {
 				r.push(`wearing a nice suit, with chopsticks holding ${hisA} silver hair back in a bun. ${HisA} clothes are conservative, but they can't hide ${hisA} generous curves.`);
 			}
 			if (V.cockFeeder === 1 && paSeed === 1) {
-				r.push(`A recognizable little representation of one of your slaves has ${hisU} head under the front of ${hisA} skirt, and is eating ${himA} out. The slave must be down in the kitchen, getting a meal out of the food dispensers. The business ${womanA} notices you watching and winks, running a possessive hand through the slave's hair.`);
+				r.push(`A recognizable little representation of one of your slaves has ${hisU} head under the front of ${hisA} skirt, and is eating ${himA} out. The slave must be down in the kitchen, getting a meal out of the food dispensers. The business${womanA} notices you watching and winks, running a possessive hand through the slave's hair.`);
 			} else if (V.suppository === 1 && paSeed === 2) {
-				r.push(`A recognizable little representation of one of your slaves is down on ${hisU} knees in front of ${himA}, and the business ${womanA} is using a big strap-on on the poor slave's butt. The slave must be receiving ${hisU} drugs from one of the dildo dispensers. The business ${womanA} notices you watching ${himA} and gives you a cheerful little wave, ignoring the slave's distress.`);
+				r.push(`A recognizable little representation of one of your slaves is down on ${hisU} knees in front of ${himA}, and the business${womanA} is using a big strap-on on the poor slave's butt. The slave must be receiving ${hisU} drugs from one of the dildo dispensers. The business${womanA} notices you watching ${himA} and gives you a cheerful little wave, ignoring the slave's distress.`);
 			} else if (masturbationAllowed === 1 && paSeed === 3) {
 				r.push(`${HeA}'s fucking a recognizable little representation of one of your slaves with a strap-on, which the slave is obviously enjoying. The slave must be using one of the penthouse's many vibrators. ${HeA} sees you watching and whispers something in the slave's ear; the slave looks up at you and blushes.`);
 			} else if (paSeed === 4) {
-				r.push(`A recognizable little representation of one of your slaves is lying with ${hisU} head in ${hisA} lap. The business ${womanA} is wearing a little stethoscope and is listening to the slave breathe; the slave must be getting a checkup. The business ${womanA} is taking notes on a tablet; ${heA} nods in satisfaction.`);
+				r.push(`A recognizable little representation of one of your slaves is lying with ${hisU} head in ${hisA} lap. The business${womanA} is wearing a little stethoscope and is listening to the slave breathe; the slave must be getting a checkup. The business${womanA} is taking notes on a tablet; ${heA} nods in satisfaction.`);
 			} else if (paSeed === 5 && V.invasionVictory > 0) {
 				r.push(`${HeA}'s sitting primly next to a representation of one of your security drones, working on a little tablet. Every so often, ${heA} reaches over and rubs the drone's upper armor affectionately. When ${heA} sees you looking at ${himA}, ${heA} blushes and says, "I like this one. He did very well during the invasion. And he's so handsome!"`);
 			} else if (paSeed === 6 && V.studio === 1) {
@@ -215,30 +215,30 @@ globalThis.PersonalAssistantAppearance = function() {
 			}
 			break;
 		case "schoolgirl":
-			r.push(`${HeA}'s a cute little ${assistantRace()} school ${girlA}`);
+			r.push(`${HeA}'s a cute little ${assistantRace()} school${girlA}`);
 			if (V.assistant.fsOptions && V.assistant.fsAppearance !== "default") {
 				r.push(FSfunc());
 			} else {
 				r.push(`wearing a plaid skirt and a white shirt. ${HisA} breasts strain against the material, and ${hisA} skirt is short enough to show off a bit of bottom.`);
 			}
 			if (V.cockFeeder === 1 && paSeed === 1) {
-				r.push(`A recognizable little representation of one of your slaves has ${hisU} head under the front of ${hisA} skirt, and is eating ${himA} out. The slave must be down in the kitchen, getting a meal out of the food dispensers. As you watch, the school ${girlA} orgasms, blushing furiously when ${heA} notices you watching.`);
+				r.push(`A recognizable little representation of one of your slaves has ${hisU} head under the front of ${hisA} skirt, and is eating ${himA} out. The slave must be down in the kitchen, getting a meal out of the food dispensers. As you watch, the school${girlA} orgasms, blushing furiously when ${heA} notices you watching.`);
 			} else if (V.suppository === 1 && paSeed === 2) {
-				r.push(`A recognizable little representation of one of your slaves is down on ${hisU} knees in front of ${himA}, letting the school ${girlA} push two fingers gently in and out of ${hisU} butt. The slave must be receiving ${hisU} drugs from one of the dildo dispensers. As you watch, the school ${girlA} notices you watching ${himA}, blushes, looks away, and starts working faster.`);
+				r.push(`A recognizable little representation of one of your slaves is down on ${hisU} knees in front of ${himA}, letting the school${girlA} push two fingers gently in and out of ${hisU} butt. The slave must be receiving ${hisU} drugs from one of the dildo dispensers. As you watch, the school${girlA} notices you watching ${himA}, blushes, looks away, and starts working faster.`);
 			} else if (masturbationAllowed === 1 && paSeed === 3) {
 				r.push(`${HeA}'s having sex with a recognizable little representation of one of your slaves, kissing ${himU} and giggling occasionally. The slave must be using one of the penthouse's many vibrators. ${HeA} sees you watching and blushes, but then shifts a little so you can see better.`);
 			} else if (paSeed === 4) {
-				r.push(`A recognizable little representation of one of your slaves is lying with ${hisU} head in ${hisA} lap. The school ${girlA} is wearing a little stethoscope and is listening to the slave breathe; the slave must be getting a checkup. The school ${girlA} is patting the ${girlU}'s head reassuringly.`);
+				r.push(`A recognizable little representation of one of your slaves is lying with ${hisU} head in ${hisA} lap. The school${girlA} is wearing a little stethoscope and is listening to the slave breathe; the slave must be getting a checkup. The school${girlA} is patting the ${girlU}'s head reassuringly.`);
 			} else if (paSeed === 5 && V.invasionVictory > 0) {
 				r.push(`${HeA}'s planting a wet kiss on a representation of one of your security drones; ${heA} pats it lovingly and manages to press quite a bit of boob against the side of one of its gun assemblies. When ${heA} sees you looking at ${himA}, ${heA} giggles and says, "What? I like him! He did really well during the invasion. And he's cute!"`);
 			} else if (paSeed === 6 && V.studio === 1) {
 				r.push(`${HeA}'s getting oral from a recognizable little representation of one of your slaves, and is using a handheld camera to film the action, gonzo style. The slave must be using one of the penthouse's many vibrators, and ${V.assistant.name} is clearly turning the feed of it into porn.`);
 			} else if (paSeed === 7 && V.assistant.market) {
-				r.push(`${HeA}'s accompanied by your market assistant's nerdy school ${girlM} avatar.`);
+				r.push(`${HeA}'s accompanied by your market assistant's nerdy school${girlM} avatar.`);
 				if (V.assistant.market.relationship === "cute") {
 					r.push(`They're sitting next to each other, and appear to be doing homework side by side. The market assistant's work looks like complicated math problems, while ${V.assistant.name} is looking through lewd pictures of slaves, albeit with some kind of higher purpose.`);
 				} else if (V.assistant.market.relationship === "nonconsensual") {
-					r.push(`${V.assistant.name} is wearing a strap-on, and is bullying ${hisA} school ${girlM} conquest's pussy. The market assistant's avatar orgasms loudly as you watch, and then claps both hands over ${hisM} mouth, crying a little, unwilling to give ${V.assistant.name} the satisfaction.`);
+					r.push(`${V.assistant.name} is wearing a strap-on, and is bullying ${hisA} school${girlM} conquest's pussy. The market assistant's avatar orgasms loudly as you watch, and then claps both hands over ${hisM} mouth, crying a little, unwilling to give ${V.assistant.name} the satisfaction.`);
 				} else if (V.assistant.market.relationship === "incestuous") {
 					r.push(`They're making faces at each other and giggling, but as you watch them, this degenerates rapidly into clumsy kissing, groping of each other's breasts, and finally some enthusiastic tribbing.`);
 				} else {
@@ -249,7 +249,7 @@ globalThis.PersonalAssistantAppearance = function() {
 			}
 			break;
 		case "hypergoddess":
-			r.push(`${HeA}'s a cute "little" ${assistantRace()} fertility goddess, with monstrously wide hips, enormous milky breasts and a room filling belly. ${HisA} overfull stomach bulges and squirms from ${hisA} hundreds of occupants, as well as parts ${hisA} milk swollen breasts to either side.`);
+			r.push(`${HeA}'s a cute "little" ${assistantRace()} fertility goddess, with monstrously wide hips, enormous milky breasts, and a room-filling belly. ${HisA} overfull stomach bulges and squirms from ${hisA} hundreds of occupants, as well as parts ${hisA} milk swollen breasts to either side.`);
 			if (V.assistant.fsOptions && V.assistant.fsAppearance !== "default") {
 				r.push(FSfunc());
 			} else {
@@ -316,7 +316,7 @@ globalThis.PersonalAssistantAppearance = function() {
 				} else if (V.assistant.market.relationship === "incestuous") {
 					r.push(`They're playing doctor with each other. ${V.assistant.name} is currently inspecting ${hisA} ${sisterM}'s vagina, making sure everything is alright. Once ${heA} finishes, ${heA} states ${hisA} diagnosis and the needed cure. ${HeA} bends over ${hisA} ${sisterM} and begins administering ${hisA} "cure".`);
 				} else {
-					r.push(`They're playing house with each other, well house based off your penthouse. ${V.assistant.name} is pretending to be you while ${hisA} friend assumes ${V.assistant.name}'s role. They are currently caught up in deciding the best way to arrange the beds in the slave quarters.`);
+					r.push(`They're playing house with each other - the house in question being your penthouse. ${V.assistant.name} is pretending to be you while ${hisA} friend assumes ${V.assistant.name}'s role. They are currently caught up in deciding the best way to arrange the beds in the slave quarters.`);
 				}
 			} else {
 				r.push(`${HeA}'s watching you attentively, waiting for a chance to be helpful. When ${heA} sees your glance, ${heA} smiles shyly and looks away before returning to your gaze.`);
@@ -327,7 +327,7 @@ globalThis.PersonalAssistantAppearance = function() {
 			if (V.assistant.fsOptions && V.assistant.fsAppearance !== "default") {
 				r.push(FSfunc());
 			} else {
-				r.push(`belly wearing shorts and a white shirt that rides up ${hisA} growing belly.`);
+				r.push(`belly, wearing shorts and a white shirt that rides up ${hisA} swelling middle.`);
 			}
 			if (V.cockFeeder === 1 && paSeed === 1) {
 				r.push(`A recognizable little representation of one of your slaves has ${hisU} head under ${hisA} pregnant belly, and is eating ${himA} out. The slave must be down in the kitchen, getting a meal out of the food dispensers. As you watch, the little ${girlA} orgasms, blushing furiously when ${heA} notices you watching.`);
@@ -397,11 +397,11 @@ globalThis.PersonalAssistantAppearance = function() {
 			}
 			break;
 		case "pregnant fairy":
-			r.push(`${HeA}'s a cute little fairy with a swollen belly`);
+			r.push(`${HeA}'s a cute little fairy with a swollen belly,`);
 			if (V.assistant.fsOptions && V.assistant.fsAppearance !== "default") {
 				r.push(FSfunc());
 			} else {
-				r.push(`wearing ${hisA} birthday suit, with ${hisA} nude form obscured by the light coming from ${hisA} belly. ${HisA} silky golden hair cascades down ${hisA} back.`);
+				r.push(`wearing only ${hisA} birthday suit, with ${hisA} nude form obscured by the light coming from ${hisA} belly. ${HisA} silky golden hair cascades down ${hisA} back.`);
 			}
 			if (V.cockFeeder === 1 && paSeed === 1) {
 				r.push(`A recognizable little representation of one of your slaves sits beside ${himA}, with ${hisU} tongue scraping across ${hisA} breast to catch the beads of milk that flow. The slave must be down in the kitchen, getting a meal out of the food dispensers. The fairy notices you watching and winks, ${hisA} unattended breast giving out a small spray of milk.`);
@@ -446,7 +446,7 @@ globalThis.PersonalAssistantAppearance = function() {
 			} else if (paSeed === 4) {
 				r.push(`A recognizable little representation of one of your slaves is lying with ${hisU} head in ${hisA} lap. The goo ${girlA} is covering ${hisU} chest and is listening to the slave breathe; the slave must be getting a checkup. The goo ${girlA} is patting the ${girlU}'s head reassuringly.`);
 			} else if (paSeed === 5 && V.invasionVictory > 0) {
-				r.push(`${HeA}'s planting a very wet kiss on a representation of one of your security drones; ${heA} hugs it as best until it pops into ${himA}. When ${heA} sees you looking at ${himA}, ${heA} giggles and says, "What? I like him! He did really well during the invasion. I promise he won't rust in here!"`);
+				r.push(`${HeA}'s planting a very wet kiss on a representation of one of your security drones; ${heA} hugs it as best ${heA} can until it pops into ${himA}. When ${heA} sees you looking at ${himA}, ${heA} giggles and says, "What? I like him! He did really well during the invasion. I promise he won't rust in here!"`);
 			} else if (paSeed === 6 && V.studio === 1) {
 				r.push(`${HeA}'s getting oral from a recognizable little representation of one of your slaves, and is using a handheld camera to film the action, gonzo style. The slave must be using one of the penthouse's many vibrators, and your personal assistant is clearly turning the feed of it into porn.`);
 			} else {
@@ -475,9 +475,9 @@ globalThis.PersonalAssistantAppearance = function() {
 			if (V.cockFeeder === 1 && paSeed === 1) {
 				r.push(`A recognizable little representation of one of your slaves is locking lips with ${himA}. The slave must be down in the kitchen, getting a meal out of the food dispensers. The angel notices you watching, blushes deeply and covers ${himselfA} and the slave with a wing.`);
 			} else if (V.suppository === 1 && paSeed === 2) {
-				r.push(`A recognizable little representation of one of your slaves is across ${hisA} lap, ${hisU} rear red from a recent spanking. The slave must be receiving ${hisU} drugs from one of the dildo dispensers. The angel notices you watching, nods, and resumes spanking, ignoring the slave's distress.`);
+				r.push(`A recognizable little representation of one of your slaves is laid across ${hisA} lap, ${hisU} rear red from a recent spanking. The slave must be receiving ${hisU} drugs from one of the dildo dispensers. The angel notices you watching, nods, and resumes spanking, ignoring the slave's distress.`);
 			} else if (masturbationAllowed === 1 && paSeed === 3) {
-				r.push(`${HeA} has a visible representation of one of your slaves across ${hisA} lap, a vibrator partially inserted into ${himU}, which the slave is obviously enjoying. The slave must be using one of the penthouse's many vibrators. ${HeA} notices you watching and blushes deeply before returning to pleasuring the slave.`);
+				r.push(`${HeA} has a visible representation of one of your slaves laid across ${hisA} lap, a vibrator partially inserted into ${himU}, which the slave is obviously enjoying. The slave must be using one of the penthouse's many vibrators. ${HeA} notices you watching and blushes deeply before returning to pleasuring the slave.`);
 			} else if (paSeed === 4) {
 				r.push(`A recognizable little representation of one of your slaves is lying with ${hisU} head in ${hisA} lap. The angel is embracing ${himU} gently and silently; the slave must be getting a checkup. ${HeA} looks up at you with a smile; the slave must be doing well.`);
 			} else if (paSeed === 5 && V.invasionVictory > 0) {
@@ -517,7 +517,7 @@ globalThis.PersonalAssistantAppearance = function() {
 			} else if (V.suppository === 1 && paSeed === 2) {
 				r.push(`A recognizable little representation of one of your slaves is before ${himA}, ass in the air, as ${heA} eagerly fists ${hisU} rear. The slave must be receiving ${hisU} drugs from one of the dildo dispensers. The cherub notices you watching and tosses you a thumbs up with ${hisA} free hand.`);
 			} else if (masturbationAllowed === 1 && paSeed === 3) {
-				r.push(`A recognizable little representation of one of your slaves is before ${himA}, ass in the air, as ${heA} eagerly fucks ${himU} with a strap-on, which the slave is obviously enjoying. The slave must be using one of the penthouse's many vibrators. ${HeA} notices you watching, tosses up a thumbs up at you and increases ${hisA} thrusting.`);
+				r.push(`A recognizable little representation of one of your slaves is before ${himA}, ass in the air, as ${heA} eagerly fucks ${himU} with a strap-on, which the slave is obviously enjoying. The slave must be using one of the penthouse's many vibrators. ${HeA} notices you watching, tosses up a thumbs up at you and intensifies ${hisA} thrusting.`);
 			} else if (paSeed === 4) {
 				r.push(`A recognizable little representation of one of your slaves is lying before ${himA}. The cherub is hovering in front of ${hisU} chest, head to ${hisU} breast, listening to ${hisU} heartbeat; the slave must be getting a checkup. ${HeA} beams you a smile; the slave must be doing well.`);
 			} else if (paSeed === 5 && V.invasionVictory > 0) {
@@ -553,7 +553,7 @@ globalThis.PersonalAssistantAppearance = function() {
 			} else if (masturbationAllowed === 1 && paSeed === 3) {
 				r.push(`A recognizable little representation of one of your slaves is before ${himA}, perched atop a wooden horse with sexual fluids running down its sides. The slave must be using one of the penthouse's many sex toys. Noticing you watching, the imp flies above ${himU} and roughly forces ${himU} down, eliciting a scream of surprise from the horny slave. ${HeA} likely upped the output on whatever toy the slave was using.`);
 			} else if (paSeed === 4) {
-				r.push(`A recognizable little representation of one of your slaves is lying on ${hisU} side before ${himA}; belly painfully distended. The imp is hovering over ${himU} holding an enema bag; the slave must be getting a checkup. ${HeA} notices your gaze and squeezes the bag, forcing a burst of liquid into the slave's gut and drawing a moan of discomfort out of the ${girlU}.`);
+				r.push(`A recognizable little representation of one of your slaves is lying on ${hisU} side before ${himA}, belly painfully distended. The imp is hovering over ${himU} holding an enema bag; the slave must be getting a checkup. ${HeA} notices your gaze and squeezes the bag, forcing a burst of liquid into the slave's gut and drawing a moan of discomfort out of the ${girlU}.`);
 			} else if (paSeed === 5 && V.invasionVictory > 0) {
 				r.push(`${HeA}'s flapping around in circles chasing a representation of one of your security drones with a mallet. When ${heA} sees you looking at ${himA}, ${heA} quickly hides the hammer behind ${hisA} back, giggles and says, "He let some get away and needed to be punished!"`);
 			} else if (paSeed === 6 && V.studio === 1) {
@@ -565,9 +565,9 @@ globalThis.PersonalAssistantAppearance = function() {
 				} else if (V.assistant.market.relationship === "nonconsensual") {
 					r.push(`${V.assistant.name} has ${hisA} plaything tightly bound to a rack and is gleefully pouring hot wax onto the oddly silent market assistant. You see why when a drop lands on ${hisM} sensitive clit, eliciting a scream from the restrained imp; ${V.assistant.name} pulls ${hisM} restraints even tighter as punishment.`);
 				} else if (V.assistant.market.relationship === "incestuous") {
-					r.push(`${V.assistant.name} and ${hisA} ${sisterM} are struggling to stay airborne as they attempt push an oversized, double-ended dildo out of their own cunt and into the other's. When they notice you watching, ${V.assistant.name} seizes the opportunity to bear down hard, forcing the entirety of the toy into the distracted market assistant. ${HeM} crashes to the ground, hands upon ${hisM} cock bulged middle, orgasming indecently.`);
+					r.push(`${V.assistant.name} and ${hisA} ${sisterM} are struggling to stay airborne as they attempt to push an oversized, double-ended dildo out of their own cunt and into the other's. When they notice you watching, ${V.assistant.name} seizes the opportunity to bear down hard, forcing the entirety of the toy into the distracted market assistant. ${HeM} crashes to the ground, hands upon ${hisM} cock-bulged middle, orgasming indecently.`);
 				} else {
-					r.push(`They're taking swings at each other with switches. Giggling with each swing and moaning with every successful strike.`);
+					r.push(`They're taking swings at each other with switches, giggling with each swing and moaning with every successful strike.`);
 				}
 			} else {
 				r.push(`${HeA}'s inspecting ${hisA} arsenal of toys and punishment tools. When ${heA} notices you watching, ${heA} grabs ${hisA} favorite and eagerly makes use of it on ${himselfA}.`);
@@ -576,6 +576,7 @@ globalThis.PersonalAssistantAppearance = function() {
 		case "witch":
 			r.push(`${HeA}'s a cute little ${assistantRace()} witch with thin, flowing robes and a wide brimmed, if rather stereotypical, witch's hat.`);
 			if (V.assistant.fsOptions && V.assistant.fsAppearance !== "default") {
+				r.push(`${HeA} appears to have just attempted a new and unfamiliar spell from ${hisA} tome.`);
 				r.push(FSfunc());
 			} else {
 				r.push(`${HeA} frequently carries a tome of new and erotic spells.`);
@@ -637,11 +638,11 @@ globalThis.PersonalAssistantAppearance = function() {
 				if (V.assistant.market.relationship === "cute") {
 					r.push(`The market assistant is tightly wrapped in a bodysuit made of ${V.assistant.name}, save for ${hisM} exposed, very pregnant, belly. ${HisA} head briefly appears over the ${girlM}'s face and eyes you, while the market assistant giggles at the sensations covering ${hisM} body.`);
 				} else if (V.assistant.market.relationship === "nonconsensual") {
-					r.push(`The market assistant has been reduced to nothing more than a bloated incubator. ${V.assistant.name} runs ${hisA} tendrils across ${hisA} breeder's swollen body, fondling ${hisM} squirming, offspring filled breasts and massaging ${hisM} octuplet sized, bulging pregnancy. The hapless ${girlM} twitches slightly as several more wormlike creatures slip from ${hisM} body, prompting ${V.assistant.name} to drive ${hisA} tentacles into all ${hisM} holes and vigorously pump ${himM} full of even more aphrodisiacs and eggs.`);
+					r.push(`The market assistant has been reduced to nothing more than a bloated incubator. ${V.assistant.name} runs ${hisA} tendrils across ${hisA} breeder's swollen body, fondling ${hisM} squirming, offspring-filled breasts and massaging ${hisM} octuplet-sized, bulging pregnancy. The hapless ${girlM} twitches slightly as several more wormlike creatures slip from ${hisM} body, prompting ${V.assistant.name} to drive ${hisA} tentacles into all ${hisM} holes and vigorously pump ${himM} full of even more aphrodisiacs and eggs.`);
 				} else if (V.assistant.market.relationship === "incestuous") {
 					r.push(`The market assistant's arms and legs are sunken into a wall of ${V.assistant.name}'s flesh; ${hisM} immense stomach and breasts allowed to hang free. One of ${hisM} breasts visibly shifts as another wormlike larva pushes its way out of ${hisM} nipple, waking the addled ${girlM} from ${hisM} stupor. ${HeM} moans lustfully, ${hisM} mind thoroughly warped by ${V.assistant.name}'s aphrodisiacs, "${SisterA}! I need more...I feel sho empty! Fill me up till I bursht!" ${V.assistant.name} wastes no time in snaking into ${hisM} gaping holes and pumping ${himM} so full ${hisM} belly touches the floor and breasts heave massively.`);
 				} else {
-					r.push(`They're sitting side by side, the market assistant resting an arm atop ${hisM} huge, larvae filled belly while clutching a newborn to ${hisM} breast. ${V.assistant.name} embraces ${hisA} pregnant lover with several tentacles before drawing one to the ${girlM}'s lips. ${HeM} delicately kisses it before wrapping ${hisM} lips around it and pleasuring ${hisM} mate.`);
+					r.push(`They're sitting side by side, the market assistant resting an arm atop ${hisM} huge, larvae-filled belly while clutching a newborn to ${hisM} breast. ${V.assistant.name} embraces ${hisA} pregnant lover with several tentacles before drawing one to the ${girlM}'s lips. ${HeM} delicately kisses it before wrapping ${hisM} lips around it and pleasuring ${hisM} mate.`);
 				}
 			} else {
 				r.push(`${HeA}'s idly standing there, at least when you look at ${himA}; you catch strange things in the corner of your vision while you are working.`);
@@ -657,7 +658,7 @@ globalThis.PersonalAssistantAppearance = function() {
 			if (V.cockFeeder === 1 && paSeed === 1) {
 				r.push(`${HeA} has a recognizable little representation of one of your slaves with ${hisU} lips around the base of ${hisA} dick and a huge bulge down ${hisU} throat. The slave must be down in the kitchen, getting a meal out of the food dispensers. ${HeA} notices you watching and energetically renews deepthroating the slave. ${HeA} moans lewdly as ${heA} blows ${hisA} load in the slave's mouth, forcing cum to spray out the slave's nose and around ${hisA} cock. ${HeA} sighs with disappointment at the mess the slave has made.`);
 			} else if (V.suppository === 1 && paSeed === 2) {
-				r.push(`${HeA} is happily assfucking a recognizable little representation of one of your slaves. The slave must be receiving ${hisU} drugs from one of the dildo dispensers. ${HeA} notices you watching, increases ${hisA} pace and cums deep in the slave's rear, slightly rounding ${hisU} belly with cum.`);
+				r.push(`${HeA} is happily assfucking a recognizable little representation of one of your slaves. The slave must be receiving ${hisU} drugs from one of the dildo dispensers. ${HeA} notices you watching, increases ${hisA} pace, and cums deep in the slave's rear, slightly rounding ${hisU} belly with cum.`);
 			} else if (masturbationAllowed === 1 && paSeed === 3) {
 				r.push(`A recognizable little representation of one of your slaves is riding ${hisA} erect cock. The slave must be using one of the penthouse's many sex toys. ${HeA} notices you watching and winks at you, before promising not to suck too much life from ${hisA} enthusiastic partner.`);
 			} else if (paSeed === 4) {
@@ -673,7 +674,7 @@ globalThis.PersonalAssistantAppearance = function() {
 				} else if (V.assistant.market.relationship === "nonconsensual") {
 					r.push(`The market assistant is being violently penetrated by ${V.assistant.name}, ${hisM} bloated belly swaying in tune to ${hisA} thrusts. The hapless ${girlM} struggles in discomfort as the incubus blows another load into ${hisM} already full womb, causing cum to backflow out of ${hisM} now loose pussy. ${V.assistant.name} leans back, motions to you, and asks, "Plenty of holes still to go around, if you want one!"`);
 				} else if (V.assistant.market.relationship === "incestuous") {
-					r.push(`The market assistant is eagerly riding ${hisM} big ${sisterA}, ${V.assistant.name}'s, dick. You can't help but notice how full ${hisM} breasts have gotten and how plump ${hisM} ass and thighs now are. ${HeM} moans with lust as ${V.assistant.name} cums into ${hisM} fertile pussy; a glowing sigil appearing below ${hisM} navel. ${HeM} is well on ${hisM} way to becoming the succubus consort of ${hisM} once human ${sisterA}.`);
+					r.push(`The market assistant is eagerly riding ${hisM} big ${sisterA}, ${V.assistant.name}'s, dick. You can't help but notice how full ${hisM} breasts have gotten and how plump ${hisM} ass and thighs now are. ${HeM} moans with lust as ${V.assistant.name} cums into ${hisM} fertile pussy; a glowing sigil appearing below ${hisM} navel. ${HeM} is well on ${hisM} way to becoming the succubus consort of ${hisM} once-human ${sisterA}.`);
 				} else {
 					r.push(`The market assistant is embracing ${V.assistant.name} as ${heM} is lovingly penetrated by the caring incubus. They pull each other close as they cum together, locking lips and refusing to let go until the other is completely satisfied. It takes quite some before they settle down and wave to you, thanking you deeply for the true love you've gifted them.`);
 				}
@@ -768,7 +769,7 @@ globalThis.PersonalAssistantAppearance = function() {
 						r.push(`${HeA}'s absentmindedly jerking off. It isn't until after ${heA} has blown ${hisA} load that ${heA} notices you've been watching.`);
 						break;
 					case "slave professionalism":
-						r.push(`${HeA} is patiently awaiting ${hisA} ${properMaster()} attention and now that ${heA} has it, asks if you want what's in ${hisA} pants.`);
+						r.push(`${HeA} is patiently awaiting ${hisA} ${properMaster()}'s attention, and now that ${heA} has it, asks if you want what's in ${hisA} pants.`);
 						break;
 					case "petite admiration":
 						r.push(`${HeA}'s absentmindedly giving ${himselfA} head. When ${heA} notices you watching, ${heA} pops ${hisA} cockhead out of ${hisA} mouth, imploring you to finish ${himA} off.`);
@@ -791,7 +792,7 @@ globalThis.PersonalAssistantAppearance = function() {
 			if (V.cockFeeder === 1 && paSeed === 1) {
 				r.push(`${HeA} has a recognizable little representation of one of your slave between ${hisA} legs and is moaning with lust as the slave eagerly eats ${himA} out. The slave must be down in the kitchen, getting a meal out of the food dispensers. When ${heA} notices you watching, ${heA} gives you a show by cumming hard across the slave's face.`);
 			} else if (V.suppository === 1 && paSeed === 2) {
-				r.push(`${HeA} is happily assfucking a recognizable little representation of one of your slaves with a strap-on. The slave must be receiving ${hisU} drugs from one of the dildo dispensers. Noticing you watching, ${heA} unwinds ${hisA} tail from the around the slave and begins fucking ${hisA} own pussy with it.`);
+				r.push(`${HeA} is happily assfucking a recognizable little representation of one of your slaves with a strap-on. The slave must be receiving ${hisU} drugs from one of the dildo dispensers. Noticing you watching, ${heA} unwinds ${hisA} tail from around the slave and begins fucking ${hisA} own pussy with it.`);
 			} else if (masturbationAllowed === 1 && paSeed === 3) {
 				r.push(`A recognizable little representation of one of your slaves is sharing a double-ended dildo with ${himA}. The slave must be using one of the penthouse's many sex toys. ${HeA} notices you watching and blows you a kiss, before promising not to suck too much life from ${hisA} enthusiastic partner.`);
 			} else if (paSeed === 4) {
@@ -807,23 +808,23 @@ globalThis.PersonalAssistantAppearance = function() {
 				} else if (V.assistant.market.relationship === "nonconsensual") {
 					r.push(`The market assistant is being violently ridden by ${V.assistant.name}, ${hisA} fuller assets swaying in tune to ${hisA} movements. The hapless ${girlM} struggles pitifully as the succubus coaxes another load out of ${hisA} exhausted toy. ${V.assistant.name} leans back, strokes ${hisA} luscious body and says, "${HisM} energy is making me even more beautiful for you!"`);
 				} else if (V.assistant.market.relationship === "incestuous") {
-					r.push(`The market assistant is being ridden by ${hisM} enormously pregnant big ${sisterA}, ${V.assistant.name}. ${HeM}'s supporting ${hisA} taut belly as ${heA} uses ${hisA} hands to hold their twins to ${hisA} swollen breasts. You can't help but notice how full ${hisM} balls have become and thick ${hisM} shaft is. ${HeM} moans with lust as ${V.assistant.name} bucks with orgasm before painting ${hisA} womb with another coat of sperm. ${V.assistant.name} grunts slightly as ${hisM} dick grows larger inside ${himA} and ${hisM} balls swell for a second round. ${HeM} is well on ${hisM} way to becoming the incubus lover of ${hisM} once human ${sisterA}.`);
+					r.push(`The market assistant is being ridden by ${hisM} enormously pregnant big ${sisterA}, ${V.assistant.name}. ${HeM}'s supporting ${hisA} taut belly as ${heA} uses ${hisA} hands to hold their twins to ${hisA} swollen breasts. You can't help but notice how full ${hisM} balls have become and thick ${hisM} shaft is. ${HeM} moans with lust as ${V.assistant.name} bucks with orgasm before painting ${hisA} womb with another coat of sperm. ${V.assistant.name} grunts slightly as ${hisM} dick grows larger inside ${himA} and ${hisM} balls swell for a second round. ${HeM} is well on ${hisM} way to becoming the incubus lover of ${hisM} once-human ${sisterA}.`);
 				} else {
 					r.push(`The market assistant is tenderly fucking ${V.assistant.name} in the missionary position. ${HeM} leans in as they cum together, locking lips and kissing ${hisM} lover deeply. Once they are both satisfied, they snuggle up for a post coitus rest and thank you deeply for the true love you've gifted them.`);
 				}
 			} else {
 				switch (V.assistant.fsAppearance) {
 					case "paternalist":
-						r.push(`${HeA}'s absentmindedly groping ${hisA} tits. When ${heA} notices you eyeing ${himA}, ${heA} smiles coyly and leans forward giving you a tantalizing view of ${hisA} cleavage.`);
+						r.push(`${HeA}'s absentmindedly groping ${hisA} tits. When ${heA} notices you eyeing ${himA}, ${heA} smiles coyly and leans forward, giving you a tantalizing view of ${hisA} cleavage.`);
 						break;
 					case "degradationist":
-						r.push(`${HeA}'s absentmindedly playing with ${hisA} nipple rings. When ${heA} notices you eyeing ${himA}, ${heA} smiles coyly and runs ${hisA} hands down ${hisA} curves to ${hisA} crotch where ${heA} traces the piercings dangling from ${hisA} labia.`);
+						r.push(`${HeA}'s absentmindedly playing with ${hisA} nipple rings. When ${heA} notices you eyeing ${himA}, ${heA} smiles coyly and runs ${hisA} hands down ${hisA} curves to ${hisA} crotch, where ${heA} traces the piercings dangling from ${hisA} labia.`);
 						break;
 					case "supremacist":
 						r.push(`${HeA}'s absentmindedly groping ${hisA} tits. When ${heA} notices you eyeing ${himA}, ${heA} smiles coyly and runs ${hisA} hands down ${hisA} curves, tempting you with ${hisA} pure ${V.arcologies[0].FSSupremacistRace} body.`);
 						break;
 					case "subjugationist":
-						r.push(`${HeA}'s absentmindedly groping ${hisA} tits. When ${heA} notices you eyeing ${himA}, ${heA} smiles coyly and runs ${hisA} hands down ${hisA} curves while coming onto you like a needy ${V.arcologies[0].FSSubjugationistRace} slut.`);
+						r.push(`${HeA}'s absentmindedly groping ${hisA} tits. When ${heA} notices you eyeing ${himA}, ${heA} smiles coyly and runs ${hisA} hands down ${hisA} curves, while coming onto you like a needy ${V.arcologies[0].FSSubjugationistRace} slut.`);
 						break;
 					case "chattel religionist":
 						r.push(`${HeA}'s absentmindedly groping ${hisA} tits. When ${heA} notices you eyeing ${himA}, ${heA} smiles coyly and runs ${hisA} hands down ${hisA} sides and to ${hisA} pussy while moaning seductively.`);
@@ -838,7 +839,7 @@ globalThis.PersonalAssistantAppearance = function() {
 						}
 						break;
 					case "repopulation focus":
-						r.push(`${HeA}'s absentmindedly sucking a tit. When ${heA} notices you eyeing ${himA}, ${heA} smiles coyly and runs ${hisA} hands down ${hisA} curves and across ${hisA} pregnancy where ${heA} traces ${hisA} popped navel. A flurry of kicks bulge ${hisA} belly as it grows slightly larger. ${HeA} sighs and pats ${hisA} added mass.`);
+						r.push(`${HeA}'s absentmindedly sucking a tit. When ${heA} notices you eyeing ${himA}, ${heA} smiles coyly and runs ${hisA} hands down ${hisA} curves and across ${hisA} pregnancy, where ${heA} traces ${hisA} popped navel. A flurry of kicks bulge ${hisA} belly as it grows slightly larger. ${HeA} sighs and pats ${hisA} added mass.`);
 						break;
 					case "eugenics":
 						r.push(`${HeA}'s absentmindedly groping ${hisA} tits. When ${heA} notices you eyeing ${himA}, ${heA} smiles coyly and spreads ${hisA} legs, inviting you to enjoy ${hisA} perfect pussy.`);
@@ -863,7 +864,7 @@ globalThis.PersonalAssistantAppearance = function() {
 						r.push(`${HeA}'s absentmindedly milking a pair of ${hisA} tits. When ${heA} notices you eyeing ${himA}, ${heA} smiles coyly and leaps to ${hisA} feet, causing ${hisA} quartet of milk bags to spring loose from ${hisA} tops. ${HeA} giggles as ${heA} gestures the many ways you could titfuck ${himA}.`);
 						break;
 					case "maturity preferentialist":
-						r.push(`${HeA}'s absentmindedly groping ${hisA} tits. When ${heA} notices you eyeing ${himA}, ${heA} smiles coyly and begins making a motion you can only fathom the meaning of.`);
+						r.push(`${HeA}'s absentmindedly groping ${hisA} tits. When ${heA} notices you eyeing ${himA}, ${heA} smiles coyly and makes a motion you can only begin to fathom the meaning of.`);
 						break;
 					case "youth preferentialist":
 						if (V.minimumSlaveAge === 3) {
@@ -890,7 +891,7 @@ globalThis.PersonalAssistantAppearance = function() {
 						r.push(`${HeA}'s absentmindedly fingering ${himselfA}. When ${heA} notices you eyeing ${himA}, ${heA} smiles coyly and climaxes with a wet gush before spreading ${hisA} legs for round two.`);
 						break;
 					case "slave professionalism":
-						r.push(`${HeA} is patiently awaiting ${hisA} ${properMaster()} attention and now that ${heA} has it, curtsies and asks what pleasure you desire.`);
+						r.push(`${HeA} is patiently awaiting ${hisA} ${properMaster()}'s attention, and now that ${heA} has it, curtsies and asks what pleasure you desire.`);
 						break;
 					case "petite admiration":
 						r.push(`${HeA}'s absentmindedly groping ${hisA} tits. When ${heA} notices you eyeing ${himA}, ${heA} smiles coyly and lifts ${hisA} arms, begging to be picked up.`);
@@ -961,7 +962,7 @@ globalThis.PersonalAssistantAppearance = function() {
 				"repopulation focus": `${HeA}'s very pregnant; ${hisA} belly is covered in large bulges revealing the eggs growing within ${himA}.`,
 				eugenics: `${HeA}'s wearing a complex chastity device, keeping ${hisA} dicks and cunt unusable.`,
 				"physical idealist": `${HeA}'s quite muscular, and behaves with total confidence.`,
-				"hedonistic decadence": `${HeA}'s quite heavy set, and prefers to laze about eating and masturbating.`,
+				"hedonistic decadence": `${HeA}'s quite heavyset, and prefers to laze about eating and masturbating.`,
 				"gender radicalist": `${HeA}'s accentuated ${hisA} androgyny, with ${hisA} tits and ${hisA} cocks ${hisA} only obvious gendered traits.`,
 				"gender fundamentalist": `${HeA}'s made ${himselfA} as cute as a demonic little creature with cocks and tentacle hair can possibly be.`,
 				"asset expansionist": `${HeA}'s increased the size of ${hisA} assets recently: ${hisA} cocks are so large that ${heA} can give them a blowjob, and ${hisA} boobs are so big ${heA} can give ${himselfA} a titjob at the same time.`,
@@ -1017,24 +1018,24 @@ globalThis.PersonalAssistantAppearance = function() {
 				"roman revivalist": `wearing the armor of a Roman auxilia, complete with lorica hamata and oval shield painted with your arcology's symbols.`,
 				"neoimperialist": `wearing a full set of advanced, powered battle armor, painted in your colors and with the crest of your family displayed prominently over a massive holographic tower shield.`,
 				"aztec revivalist": `wearing the battledress of the greatest warriors, ${heA} stands incredibly imposing, holding a spear and shield.`,
-				"egyptian revivalist": `wearing a simple white linen dress, kohl eye shadow, and sandals, making ${himA} look like a barbarian immigrant to the land of the Nile.`,
+				"egyptian revivalist": `wearing a simple white linen dress, kohl eyeshadow, and sandals, making ${himA} look like a barbarian immigrant to the land of the Nile.`,
 				"edo revivalist": `wearing a Japanese warrior's robe with a pair of swords tucked into its sash.`,
 				"arabian revivalist": `with a bare chest, loose pantaloons, and a broad silk sash wound around ${hisA} waist with a scimitar thrust into it.`,
 				"chinese revivalist": `wearing loose silk robes belted with rope and carrying a simple warrior monk's staff.`,
-				"chattel religionist": `wearing a crusader's mail. ${HisA} long blonde hair cascades down the back of ${hisA} surcoat in golden glory.`,
+				"chattel religionist": V.arcologies[0].FSChattelReligionistLaw2 === 1 ? `with your religion's holy symbol painted on ${hisA} nude body. ${HisA} long blonde hair cascades down ${hisA} back in golden glory.` : `wearing a crusader's mail. ${HisA} long blonde hair cascades down the back of ${hisA} surcoat in golden glory.`,
 				"repopulation focus": `with an enormous belly. Its oversized occupant kicks and squirms ferociously, eager to be born.`,
 				eugenics: `with a complex bone chastity belt blocking ${hisA} vagina.`,
 				"physical idealist": `whose muscles are lovingly rendered in lifelike detail.`,
 				"hedonistic decadence": `with a thick layer of fat covering ${hisA} muscled body. ${HeA} typically carries a half-eaten roast pig over ${hisA} shoulder.`,
 				"gender radicalist": `who is so heavily muscled that ${heA}'s become quite androgynous lately.`,
 				"gender fundamentalist": `whose heavy musculature does not detract from ${hisA} feminine beauty.`,
-				"asset expansionist": `who's almost muscle-bound.`,
-				"transformation fetishist": `who's almost muscle-bound.`,
+				"asset expansionist": `whose enormous muscles easily bear the weight of ${hisA} equally oversized chest and hindquarters.`,
+				"transformation fetishist": `who's almost unnaturally muscle-bound.`,
 				pastoralist: `wearing jean overalls, a plaid shirt whose sleeves are strained by ${hisA} biceps, and rubber boots, and has a cowboy hat pushed back on ${hisA} pretty head.`,
 				"maturity preferentialist": `with streaks of grey running through ${hisA} long flowing hair. ${HeA} has bigger natural tits than anyone that ripped could possibly maintain.`,
 				"youth preferentialist": `with whose innocent appearance belies ${hisA} heavy muscles. ${HeA} has bigger natural tits than anyone that ripped could possibly maintain.`,
 				"slimness enthusiast": `with long flowing hair, tribal tattoos, shredded abs, and bone jewelry. ${HisA} perky boobs are usually concealed by ${hisA} ornaments.`,
-				"body purist": `with a realistic tribes ${womanA}'s garb of woven jewelry and shell beads. ${HeA} has bigger natural tits than anyone that ripped could possibly maintain.`,
+				"body purist": `with a realistic tribes${womanA}'s garb of woven jewelry and shell beads. ${HeA} has bigger natural tits than anyone that ripped could possibly maintain.`,
 				"intellectual dependency": `with much more muscle than brains.`,
 				"slave professionalism": `with a keen mind to complement ${hisA} ripped body.`,
 				"petite admiration": `who, despite ${hisA} small stature, can still wrestle ${hisA} peers into submission.`,
@@ -1048,16 +1049,16 @@ globalThis.PersonalAssistantAppearance = function() {
 				"subjugationist": `wearing a nice, slightly-used suit. ${HeA} speaks with a stereotypical ${V.arcologies[0].FSSubjugationistRace} voice, but is otherwise the model of a perfect subservient secretary.`,
 				"roman revivalist": `wearing a fine stola appropriate for a respectable Roman lady, with ${hisA} hair up in a complicated style.`,
 				"neoimperialist": `wearing an elegant black suit tailored perfectly for ${hisA} holographic body, one that you recognize as being the latest in old-world fashion.`,
-				"aztec revivalist": `wearing a modest huipil, ${hisA} hair braided to two ponytails, ${heA}'s the picture of quiet elegance.`,
-				"egyptian revivalist": `wearing a simple white linen dress, kohl eye shadow, sandals, and a serene expression.`,
+				"aztec revivalist": `wearing a modest huipil, ${hisA} hair braided to two ponytails. ${HeA}'s the picture of quiet elegance.`,
+				"egyptian revivalist": `wearing a simple white linen dress, kohl eyeshadow, sandals, and a serene expression.`,
 				"edo revivalist": `wearing a fine kimono, getae, tabi, and an expression of perfect serenity.`,
 				"arabian revivalist": `wearing a tailored suit, a silk headscarf, and aviator sunglasses, making ${himA} look like a little oil heiress.`,
 				"chinese revivalist": `wearing a conservative silk qipao. ${HisA} hair is pulled back into a bun and secured by a couple of chopsticks.`,
 				"chattel religionist": `wearing a tailored suit. ${HeA} has a prominent religious symbol on a necklace that rests over ${hisA} generous bosom.`,
 				"physical idealist": `wearing a tailored suit. ${HeA}'s proportioned to make it very obvious that ${heA} works out.`,
 				"hedonistic decadence": `wearing a tailored suit. ${HeA}'s proportioned to make it very obvious that ${heA} enjoys a good drink after the day is done.`,
-				"repopulation focus": `wearing a nice suit, it's tailored to contain ${hisA} pregnant belly.`,
-				"eugenics": `wearing a nice suit and wearing the insignia of the Elite upon ${hisA} arm. ${HisA} suit strains to contain ${hisA} belly, swollen with the child of another Elite.`,
+				"repopulation focus": `wearing a nice suit, specially tailored to contain ${hisA} pregnant belly.`,
+				"eugenics": `wearing a nice suit and bearing the insignia of the Elite upon ${hisA} arm. ${HisA} suit strains to contain ${hisA} belly, swollen with the child of another Elite.`,
 				"gender radicalist": `wearing a nice suit. ${HeA}'s changed ${hisA} appearance recently to make ${himselfA} quite androgynous.`,
 				"gender fundamentalist": `wearing a nice suit. ${HeA}'s changed ${hisA} appearance recently to make ${himselfA} more feminine, with a softer expression and a pretty fall of silver-blonde hair over one shoulder.`,
 				"asset expansionist": `wearing a nice suit, which is tailored to fit ${himA} despite the fact that ${heA} has breasts almost as large as ${heA} is.`,
@@ -1070,7 +1071,7 @@ globalThis.PersonalAssistantAppearance = function() {
 				"intellectual dependency": `in a suit two sizes too small. ${HisA} breasts threaten to pop ${hisA} buttons, ${hisA} skirt conceals nothing, and ${hisA} cleavage serves as a handy storage compartment.`,
 				"slave professionalism": `wearing a refined suit that perfectly hugs ${hisA} curves, with ${hisA} silver-blonde hair braided down ${hisA} back. A pair of half-glasses tell you not to waste ${hisA} time.`,
 				"petite admiration": `wearing a suit tailored to ${hisA} petite figure.`,
-				"statuesque glorification": `wearing a suit tailored to ${hisA} towering figure. Few measure up to him.`,
+				"statuesque glorification": `wearing a suit tailored to ${hisA} towering figure. Few measure up to ${himA}.`,
 			},
 			"goddess": {
 				"default": ``,
@@ -1080,11 +1081,11 @@ globalThis.PersonalAssistantAppearance = function() {
 				"subjugationist": `with swollen hips and breasts and a huge pregnant belly. ${HeA}'s nude aside from a crown of wilted flowers and the iron shackles on ${hisA} wrists and ankles.`,
 				"roman revivalist": `with swollen hips and a big pregnant belly. ${HeA}'s clothed in a loose stola, with dozens of flowers woven into ${hisA} curly auburn hair.`,
 				"neoimperialist": `with a heaving, pregnant belly. The crest of your family is emblazoned over ${hisA} womb, as if the unborn child is already your property.`,
-				"aztec revivalist": `glowing like a sun goddess, ${hisA} full belly commands awe and respect in all who see ${himA}.`,
+				"aztec revivalist": `glowing like a sun goddess; ${hisA} full belly commands awe and respect in all who see ${himA}.`,
 				"egyptian revivalist": `wielding an ankh-headed staff. ${HeA}'s wearing a gilded headdress and linen skirt, but leaves ${hisA} breasts and pregnant stomach bare to gleam like bronze.`,
-				"edo revivalist": `${HisA} swollen hips and pregnant belly loosely wrapped in a red tomesode. ${HisA} waterfall of black hair is held by a comb shaped like big pointed fox ears.`,
+				"edo revivalist": `${hisA} swollen hips and pregnant belly loosely wrapped in a red tomesode. ${HisA} waterfall of black hair is held by a comb shaped like big pointed fox ears.`,
 				"arabian revivalist": `with swollen hips and breasts and a big pregnant belly. ${HeA}'s wrapped ${himselfA} in white silks, but only the veil around ${hisA} face is opaque.`,
-				"chinese revivalist": `${HisA} swollen hips and pregnant belly barely concealed under colorful silk robes, covered in flowers and embroidery.`,
+				"chinese revivalist": `${hisA} swollen hips and pregnant belly barely concealed under colorful silk robes, covered in flowers and embroidery.`,
 				"chattel religionist": `with swollen breasts and a big pregnant belly. ${HeA}'s surrounded by a nimbus of light and flowing platinum hair, like an angel carrying a few new cherubim.`,
 				"physical idealist": `trim and athletic despite ${hisA} pregnant belly. ${HeA}'s nude aside from a crown of flowers, ${hisA} modesty protected only by ${hisA} flowing hair.`,
 				"hedonistic decadence": `with soft, plush features. ${HisA} belly is so fat it is difficult to tell ${heA} is pregnant at first. ${HeA}'s nude aside from a crown of flowers, ${hisA} modesty protected only by ${hisA} flowing hair.`,
@@ -1092,16 +1093,16 @@ globalThis.PersonalAssistantAppearance = function() {
 				"eugenics": `with swollen hips and breasts and a big pregnant belly. ${HeA} is stunningly beautiful and proudly bears the insignia of the Elite upon ${hisA} breast.`,
 				"gender radicalist": `although ${heA}'d be nearly androgynous without the rounded pregnant belly. ${HisA} short hair and flowing robe conceal any other feminine traits.`,
 				"gender fundamentalist": `with swollen hips and breasts and a huge pregnant belly. ${HeA}'s nude aside from a crown of roses, and makes no attempt to cover ${hisA} radiant body.`,
-				"asset expansionist": `${HisA} big pregnant belly almost eclipsed by ${hisA} enormous breasts. ${HeA}'s nude aside from the sunflowers woven into ${hisA} long hair.`,
+				"asset expansionist": `${hisA} big pregnant belly almost eclipsed by ${hisA} enormous breasts. ${HeA}'s nude aside from the sunflowers woven into ${hisA} long hair.`,
 				"transformation fetishist": `clad in a rainbow of flowers and latex pasties. Even pregnant, ${hisA} breasts and ass are too firm to be natural, like a porn star who forgot ${hisA} birth control.`,
 				"pastoralist": `with oversized breasts pouring streams of milk down ${hisA} pregnant belly like a fountain. ${HeA}'s nude aside from the wildflowers tucked in ${hisA} hair.`,
 				"maturity preferentialist": `with only ${hisA} huge hips and a wreath of flowers to protect ${hisA} modesty. ${HisA} stretch-marks and laugh-lines suggest the child ${heA}'s carrying is not ${hisA} first.`,
 				"youth preferentialist": `with swollen breasts and a big pregnant belly. ${HeA}'s nude aside from a wreath of daffodils, ${hisA} body radiant with youthful energy.`,
-				"slimness enthusiast": `${HisA} big pregnant belly dominating ${hisA} otherwise lithe frame. ${HeA}'s nude aside from a crown of flowers, ${hisA} modesty protected only by ${hisA} flowing hair.`,
+				"slimness enthusiast": `${hisA} big pregnant belly dominating ${hisA} otherwise lithe frame. ${HeA}'s nude aside from a crown of flowers, ${hisA} modesty protected only by ${hisA} flowing hair.`,
 				"body purist": `with swollen hips and breasts and a big pregnant belly. ${HeA}'s nude aside from a crown of flowers, ${hisA} modesty protected only by ${hisA} flowing hair.`,
 				"intellectual dependency": `with swollen hips and breasts and a big pregnant belly. ${HeA}'s nude aside from a crown of flowers, with no sense of modesty.`,
-				"slave professionalism": `${HisA} swollen hips and pregnant belly loosely wrapped in an elegant kimono. ${HeA} radiates experience.`,
-				"petite admiration": `${HisA} big pregnant belly utterly dominating ${hisA} short height. ${HeA}'s nude aside from a crown of flowers, ${hisA} modesty protected only by ${hisA} flowing hair.`,
+				"slave professionalism": `${hisA} swollen hips and pregnant belly loosely wrapped in an elegant kimono. ${HeA} radiates experience.`,
+				"petite admiration": `${hisA} big pregnant belly utterly dominating ${hisA} short height. ${HeA}'s nude aside from a crown of flowers, ${hisA} modesty protected only by ${hisA} flowing hair.`,
 				"statuesque glorification": `with swollen breasts and an enormous pregnant belly to fit ${hisA} towering form. ${HeA}'s nude aside from a crown of flowers, ${hisA} modesty protected only by ${hisA} flowing hair.`,
 			},
 			"hypergoddess": {
@@ -1114,7 +1115,7 @@ globalThis.PersonalAssistantAppearance = function() {
 				"subjugationist": `${HeA} is shackled onto a large bed, the iron chains forcing ${hisA} legs apart and putting ${hisA} gaping pussy on display. Occasionally a stream of liquid pours from ${hisA} crotch along with a healthy ${V.arcologies[0].FSSubjugationistRace} slave baby.`,
 				"roman revivalist": `${HeA}'s taken to reclining on a traditional Roman couch and drinking wine out of a shallow dish. Occasionally a stream of liquid pours from ${hisA} crotch along with a healthy baby.`,
 				"neoimperialist": `${HeA}'s made ${himselfA} up like a glowing goddess, a golden halo surrounding ${hisA} head at all times. Occasionally a stream of liquid pours from ${hisA} crotch along with a healthy baby.`,
-				"aztec revivalist": `${HeA} glows like a sun goddess, ${hisA} life-giving belly commands awe and respect in all who see ${himA}. Every sacrifice before ${himA} coincides with another life entering the world.`,
+				"aztec revivalist": `${HeA} glows like a sun goddess; ${hisA} life-giving belly commands awe and respect in all who see ${himA}. Every sacrifice before ${himA} coincides with another life entering the world.`,
 				"egyptian revivalist": `${HeA}'s wearing an Egyptian melting perfume cake on ${hisA} head. Occasionally a stream of liquid pours from ${hisA} crotch along with a healthy baby.`,
 				"edo revivalist": `${HeA}'s wearing a brief Japanese bathhouse robe. Occasionally a stream of liquid pours from ${hisA} crotch along with a healthy baby.`,
 				"arabian revivalist": `${HeA}'s dressed ${himselfA} like an oil millionaire's broodmother, with silken linens. Occasionally a stream of liquid pours from ${hisA} crotch along with a healthy baby.`,
@@ -1129,21 +1130,21 @@ globalThis.PersonalAssistantAppearance = function() {
 				"pastoralist": `Powerful jets of milk flow from ${hisA} desk filling boobs.`,
 				"maturity preferentialist": `${HeA}'s quite mature; ${hisA} belly is covered in stretch marks.`,
 				get "youth preferentialist"() {
-					if (V.minimumSlaveAge > 13) {
-						return `${HeA}'s fresh into adulthood and already has had more children than most women. ${HeA} leans against ${hisA} mammoth belly as another child parts ${hisA} youthful pussy.`;
-					} else if (V.minimumSlaveAge > 8) {
+					if (V.minimumSlaveAge >= 18) {
+						return `${HeA}'s fresh into adulthood and already has had more children than most women ever will. ${HeA} leans against ${hisA} mammoth belly as another child parts ${hisA} youthful pussy.`;
+					} else if (V.minimumSlaveAge > 12) {
 						return `${HeA}'s fresh into ${hisA} teens and firmly anchored by ${hisA} mammoth belly. ${HisA} attempts to try and move are frequently interrupted as another child begins forcing is way out of ${hisA} tight pussy.`;
-					} else if (V.minimumSlaveAge > 4) {
+					} else if (V.minimumSlaveAge > 6) {
 						return `${HeA}'s just a young ${girlA} and already has had more children than most women will in their lives. ${HeA} happily embraces ${hisA} mammoth belly, the force of ${hisA} hug forcing milk out of ${hisA} breasts and babies out of ${hisA} crotch.`;
 					} else {
-						return `${HeA}'s surprisingly young; ${heA} happily bounces atop ${hisA} mammoth belly forcing milk out of ${hisA} breasts and babies out of ${hisA} crotch.`;
+						return `${HeA}'s surprisingly young; ${heA} happily bounces atop ${hisA} mammoth belly, forcing milk out of ${hisA} breasts and babies out of ${hisA} crotch.`;
 					}
 				},
 				"slimness enthusiast": `${HisA} massive pregnant belly completely dwarfs ${hisA} otherwise lithe frame.`,
 				"body purist": `${HeA}'s recently improved ${hisA} appearance to look more natural, with prettier boobs and softer hips.`,
 				"intellectual dependency": `${HeA} has long since become incapable of fingering ${himselfA}, but it doesn't matter when every birth is orgasmic.`,
 				"slave professionalism": `${HeA}'s wearing a flowing dress, complete with a concealed layer to house ${hisA} newborns until ${heA} is dismissed. Occasionally ${heA} quivers slightly, calculatingly giving birth when it is least disruptive.`,
-				"petite admiration": `${HeA} stands no chance of moving on ${hisA} as ${hisA} mammoth belly has long since lifted ${hisA} petite body off the ground.`,
+				"petite admiration": `${HeA} stands no chance of moving on ${hisA} own, as ${hisA} mammoth belly has long since lifted ${hisA} petite body off the ground.`,
 				"statuesque glorification": `${HeA}'s increased ${hisA} height massively, but ${hisA} mammoth belly has grown proportionately as well. Occasionally a stream of liquid pours from ${hisA} crotch along with a rather lanky baby.`,
 			},
 			"schoolgirl": {
@@ -1154,14 +1155,14 @@ globalThis.PersonalAssistantAppearance = function() {
 				"subjugationist": `wearing a plaid skirt and a white shirt. ${HeA} speaks with a stereotypical ${V.arcologies[0].FSSubjugationistRace} accent, giving the impression of a foreign exchange student with much to learn.`,
 				"roman revivalist": `wearing a ${girlA}'s stola, with ${hisA} hair pulled up into a proper upper-class Roman coiffure. ${HeA} usually carries a wax tablet and a stylus.`,
 				"neoimperialist": `wearing a prim and proper school uniform, with your family crest on ${hisA} breast pocket. ${HisA} short plaid skirt occasionally flips up to flash a hint of ${hisA} holographic panties.`,
-				"aztec revivalist": `wearing only an overshirt, ${hisA} cute little legs are complimented by ${hisA} twin tails.`,
-				"egyptian revivalist": `wearing a simple white linen skirt, kohl eye shadow, sandals, and no top at all, baring ${hisA} perky young breasts.`,
+				"aztec revivalist": `wearing only an overshirt. ${HisA} cute little legs are complimented by ${hisA} twin tails.`,
+				"egyptian revivalist": `wearing a simple white linen skirt, kohl eyeshadow, sandals, and no top at all, baring ${hisA} perky young breasts.`,
 				"edo revivalist": `wearing a simple robe appropriate for a proper, traditional Japanese lady.`,
 				"arabian revivalist": `wearing a long plaid skirt, a clean white shirt, and a headscarf, making ${himA} look like an Arab ${girlA} attending a Western school.`,
 				"chinese revivalist": `wearing a plaid skirt and a white shirt. ${HisA} hair is pulled back into a bun and secured by a couple of chopsticks.`,
 				"chattel religionist": `wearing a plaid skirt and a white shirt. ${HeA} has a prominent religious symbol on a necklace that rests at the level of ${hisA} perky tits.`,
 				"physical idealist": `wearing a plaid skirt, a white shirt, and athletic shoes. ${HeA} usually renders ${himselfA} flushed with exercise, as though ${heA} just came from gym class.`,
-				"hedonistic decadence": `wearing a plaid skirt and a white shirt. The buttons of ${hisA} shirt struggle against ${hisA} plush body and ${hisA} skirt rides up ${hisA} plump butt to expose ${hisA} panties.`,
+				"hedonistic decadence": `wearing a plaid skirt and a white shirt. The buttons of ${hisA} shirt struggle against ${hisA} plush body, and ${hisA} skirt rides up ${hisA} plump butt to expose ${hisA} panties.`,
 				"repopulation focus": `wearing a plaid skirt and a white shirt, though ${hisA} shirt rides up ${hisA} growing pregnancy. It seems ${heA} found another way to support ${hisA} team.`,
 				"eugenics": `wearing a plaid skirt and a white shirt. ${HeA} usually can be seen studying to become an upstanding member of society's elite.`,
 				"gender radicalist": `wearing a plaid skirt and a white shirt. ${HeA}'s changed ${hisA} appearance recently to make ${himselfA} quite androgynous.`,
@@ -1186,20 +1187,20 @@ globalThis.PersonalAssistantAppearance = function() {
 				"roman revivalist": `${girlA} wearing a ${girlA}'s stola.`,
 				"neoimperialist": `${girlA} wearing a tiny elementary schooler's uniform, complete with miniature plaid skirt.`,
 				"aztec revivalist": `${girlA} wearing only an overshirt; ${hisA} cute little legs are complimented by ${hisA} twin tails.`,
-				"egyptian revivalist": `${girlA} wearing a simple white linen dress, kohl eye shadow and sandals.`,
+				"egyptian revivalist": `${girlA} wearing a simple white linen dress, kohl eyeshadow, and sandals.`,
 				"edo revivalist": `${girlA} wearing a kimono far too large for ${himselfA}.`,
 				"arabian revivalist": `${girlA} wearing a simple linen dress and a headscarf.`,
 				"chinese revivalist": `${girlA} wearing a cute silk qipao.`,
 				"chattel religionist": `${girlA} wearing the garb of a priestess of the new faith.`,
-				"repopulation focus": `${girlA} wearing a loose dress, its middle bulges considerably from ${hisA} pregnancy.`,
+				"repopulation focus": `${girlA} wearing a loose dress; its middle bulges considerably from ${hisA} pregnancy.`,
 				"eugenics": `slave ${girlA} wearing nothing but an overly complex chastity belt and trying ${hisA} best to do master proud.`,
 				"degradationist": `${girlA} wearing an oversized v-neck t-shirt. The neck hole hangs low enough to show off ${hisA} perky A-cup tits and the piercings through them.`,
 				"physical idealist": `${girlA} wearing spats and a tight shirt. ${HeA} occasionally renders ${himselfA} sweaty, as if just finishing exercising.`,
 				"hedonistic decadence": `${girlA} wearing spats barely pulled over ${hisA} big ass and a tight shirt that rides up ${hisA} chubby belly. It seems someone snuck out of gym class.`,
 				"gender radicalist": `${girlA} wearing shorts and a t-shirt. ${HeA}'s changed ${hisA} appearance recently to make ${himselfA} quite androgynous.`,
-				"gender fundamentalist": `${girlA} wearing a skirt and a white shirt. ${HisA} slightly swollen belly peeks out from under ${hisA} shirt causing ${himA} to blush whenever you glance at it.`,
+				"gender fundamentalist": `${girlA} wearing a skirt and a white shirt. ${HisA} slightly swollen belly peeks out from under ${hisA} shirt, causing ${himA} to blush whenever you glance at it.`,
 				"asset expansionist": `${girlA} wearing a school swimsuit. ${HisA} breasts are unrealistically huge for ${hisA} young age and bulge lewdly around the straps of ${hisA} suit.`,
-				"transformation fetishist": `${girlA} wearing short shorts and a t-shirt. At first glance it looks like ${heA} stuck two overinflated balloons up ${hisA} shirt but with closer inspection they are revealed to be ridiculous implants.`,
+				"transformation fetishist": `${girlA} wearing short shorts and a t-shirt. At first glance it looks like ${heA} stuck two overinflated balloons up ${hisA} shirt, but with closer inspection they are revealed to be ridiculous implants.`,
 				"pastoralist": `${girlA} wearing shorts and a white shirt. There's a little wet spot over each of ${hisA} nipples.`,
 				"maturity preferentialist": `${girlA} wearing a school uniform. ${HeA} keeps rubbing ${hisA} bottom, making it look like teacher just spanked ${himA}.`,
 				"youth preferentialist": `${girlA} wearing a child's dress. ${HeA} looks barely more than three.`,
@@ -1207,40 +1208,40 @@ globalThis.PersonalAssistantAppearance = function() {
 				"body purist": `${girlA}. ${HeA}'s recently improved ${hisA} appearance to look more natural, with freckles and a winning smile.`,
 				"intellectual dependency": `${girlA} wearing nothing at all. The breeze feels nice and modesty is not something ${heA} can understand.`,
 				"slave professionalism": `${girlA} wearing a long black dress. ${HeA} is trying ${hisA} best to compose ${himselfA} and grow into a proper young ${womanA}.`,
-				"petite admiration": `${girlA} wearing a dress much to large for ${himA}. ${HisA} tiny form is just begging for a piggyback ride.`,
-				"statuesque glorification": `${girlA} wearing a too small dress. ${HeA}'s growing up fast, but still has a long way to go if ${heA} wants to stand out in a crowd.`,
+				"petite admiration": `${girlA} wearing a dress much too large for ${himA}. ${HisA} tiny form is just begging for a piggyback ride.`,
+				"statuesque glorification": `${girlA} wearing a too-small dress. ${HeA}'s growing up fast, but still has a long way to go if ${heA} wants to stand out in a crowd.`,
 			},
 			"preggololi": {
 				"default": ``,
-				"paternalist": `belly wearing a cute pink dress. The middle is stretched tight by ${hisA} growing belly.`,
-				"supremacist": `belly wearing a cute yellow dress. ${HeA} cradles ${hisA} swollen belly protectively, glowing with pride at carrying ${V.arcologies[0].FSSupremacistRace !== 0 ? addA(V.arcologies[0].FSSupremacistRace) : ""} child.`,
+				"paternalist": `belly, wearing a cute pink dress. The middle is stretched tight by ${hisA} growing belly.`,
+				"supremacist": `belly, wearing a cute yellow dress. ${HeA} cradles ${hisA} swollen belly protectively, glowing with pride at carrying ${V.arcologies[0].FSSupremacistRace !== 0 ? addA(V.arcologies[0].FSSupremacistRace) : ""} child.`,
 				"subjugationist": `belly, wearing nothing but a pregnancy biometrics collar. The collar's display reads 'Carrying 2 more ${V.arcologies[0].FSSubjugationistRace} subhumans!', something the ${girlA} occasionally reads aloud to ${himselfA}.`,
-				"roman revivalist": `belly wearing a ${girlA}'s stola.`,
-				"neoimperialist": `belly wearing a tiny elementary schooler's uniform, complete with miniature plaid skirt. ${HisA} belly swells underneath the cotton shirt.`,
-				"aztec revivalist": `belly wearing only an overshirt which struggles to cover ${hisA} rounded middle; ${hisA} cute little legs are complimented by ${hisA} twin tails.`,
-				"egyptian revivalist": `belly wearing a bulging white linen dress, kohl eye shadow and sandals.`,
-				"edo revivalist": `belly wearing a kimono far too large for ${himselfA} but does nothing to distract from ${hisA} swollen midriff.`,
-				"arabian revivalist": `belly wearing a bulging linen dress and a headscarf.`,
-				"chinese revivalist": `belly wearing a tight silk qipao.`,
-				"chattel religionist": `belly wearing the garb of a priestess of the new faith.`,
+				"roman revivalist": `belly, wearing a ${girlA}'s stola.`,
+				"neoimperialist": `belly, wearing a tiny elementary schooler's uniform, complete with miniature plaid skirt. ${HisA} belly swells underneath the cotton shirt.`,
+				"aztec revivalist": `belly, wearing only an overshirt which struggles to cover ${hisA} rounded middle; ${hisA} cute little legs are complimented by ${hisA} twin tails.`,
+				"egyptian revivalist": `belly, wearing a bulging white linen dress, kohl eyeshadow and sandals.`,
+				"edo revivalist": `belly, wearing a kimono far too large for ${himselfA} but does nothing to distract from ${hisA} swollen midriff.`,
+				"arabian revivalist": `belly, wearing a bulging linen dress and a headscarf.`,
+				"chinese revivalist": `belly, wearing a tight silk qipao.`,
+				"chattel religionist": `belly, wearing the garb of a priestess of the new faith.`,
 				"repopulation focus": `belly. ${HeA} recently adjusted ${hisA} pregnancy size to make it even larger. ${HisA} swelling ass and tits spill out from ${hisA} shorts and tube-top and the occasional kick can be seen from ${hisA} octuplets.`,
-				"eugenics": `belly, rather, ${heA} was. ${HisA} chastity belt has been torn open and ${hisA} belly is grotesquely swollen with subhuman spawn. Occasionally a malformed, impish child claws its way out of ${hisA} violated pussy.`,
-				"degradationist": `belly wearing an open vest and a thong. It shows off ${hisA} pierced milky B-cup tits and swollen pregnant belly. A large bar is driven through ${hisA} popped navel.`,
-				"physical idealist": `belly wearing spats and a tight shirt. ${HisA} shirt rides up on ${hisA} large belly and ${hisA} growing butt fills out ${hisA} spats nicely. ${HeA} cradles ${hisA} belly with a sullen look knowing it limits ${hisA} activities.`,
-				"hedonistic decadence": `belly reclining on a chair with a big bowl of snack food. ${HeA} belches and pats ${hisA} belly happily.`,
-				"gender radicalist": `belly wearing shorts and a t-shirt. ${HisA} androgynous look makes ${himA} look like a pregnant boy.`,
-				"gender fundamentalist": `belly wearing a skirt and a white shirt. ${HeA} is extremely pregnant, carrying triplets. ${HeA} blushes and pats ${hisA} belly whenever ${heA} notices your gaze.`,
-				"asset expansionist": `belly wearing a school swimsuit. ${HisA} breasts are unrealistically huge for ${hisA} young age and bulge lewdly around the straps of ${hisA} overfilled suit. ${HisA} suit is extremely tight around the middle thanks to ${hisA} growing belly.`,
-				"transformation fetishist": `belly wearing short shorts and a t-shirt. At first glance it looks like ${heA} stuck two overinflated balloons up ${hisA} shirt but with closer inspection they are revealed to be ridiculous implants. They sit atop ${hisA} bulging belly.`,
-				"pastoralist": `belly wearing shorts and a white shirt. There's a little wet spot over each of ${hisA} nipples. ${HisA} breasts have swollen to C-cups thanks to ${hisA} pregnancy and the milkings.`,
-				"maturity preferentialist": `belly wearing a school uniform. ${HisA} top is left unbuttoned to allow ${hisA} belly room. ${HeA} keeps rubbing ${hisA} bottom, making it look like Teacher just spanked ${himA}.`,
-				"youth preferentialist": `belly wearing nothing, as nothing will fit ${hisA} lewd body. ${HeA} looks barely more than three and is laying atop ${hisA} proportionally enormous belly.`,
-				"slimness enthusiast": `belly wearing shorts and a white shirt. ${HisA} slim body makes ${hisA} pregnant belly look much bigger than it is.`,
+				"eugenics": `belly, or rather, ${heA} was. ${HisA} chastity belt has been torn open and ${hisA} belly is grotesquely swollen with subhuman spawn. Occasionally a malformed, impish child claws its way out of ${hisA} violated pussy.`,
+				"degradationist": `belly, wearing an open vest and a thong. It shows off ${hisA} pierced milky B-cup tits and swollen pregnant belly. A large bar is driven through ${hisA} popped navel.`,
+				"physical idealist": `belly, wearing spats and a tight shirt. ${HisA} shirt rides up on ${hisA} large belly and ${hisA} growing butt fills out ${hisA} spats nicely. ${HeA} cradles ${hisA} belly with a sullen look knowing it limits ${hisA} activities.`,
+				"hedonistic decadence": `belly, reclining on a chair with a big bowl of snack food. ${HeA} belches and pats ${hisA} belly happily.`,
+				"gender radicalist": `belly, wearing shorts and a t-shirt. ${HisA} androgynous look makes ${himA} look like a pregnant boy.`,
+				"gender fundamentalist": `belly, wearing a skirt and a white shirt. ${HeA} is extremely pregnant, carrying triplets. ${HeA} blushes and pats ${hisA} belly whenever ${heA} notices your gaze.`,
+				"asset expansionist": `belly, wearing a school swimsuit. ${HisA} breasts are unrealistically huge for ${hisA} young age and bulge lewdly around the straps of ${hisA} overfilled suit. ${HisA} suit is extremely tight around the middle thanks to ${hisA} growing belly.`,
+				"transformation fetishist": `belly, wearing short shorts and a t-shirt. At first glance it looks like ${heA} stuck two overinflated balloons up ${hisA} shirt but with closer inspection they are revealed to be ridiculous implants. They sit atop ${hisA} bulging belly.`,
+				"pastoralist": `belly, wearing shorts and a white shirt. There's a little wet spot over each of ${hisA} nipples. ${HisA} breasts have swollen to C-cups thanks to ${hisA} pregnancy and the milkings.`,
+				"maturity preferentialist": `belly, wearing a school uniform. ${HisA} top is left unbuttoned to allow ${hisA} belly room. ${HeA} keeps rubbing ${hisA} bottom, making it look like Teacher just spanked ${himA}.`,
+				"youth preferentialist": `belly, wearing nothing, as nothing will fit ${hisA} lewd body. ${HeA} looks barely more than three and is laying atop ${hisA} proportionally enormous belly.`,
+				"slimness enthusiast": `belly, wearing shorts and a white shirt. ${HisA} slim body makes ${hisA} pregnant belly look much bigger than it is.`,
 				"body purist": `belly. ${HeA}'s recently improved ${hisA} appearance to look more natural, with freckles and a winning smile. ${HeA} cradles ${hisA} swelling belly and twirls when you look ${hisA} way.`,
 				"intellectual dependency": `belly. ${HeA} spends a lot of trying to suck it in, not understanding that ${heA}'s with child and not just fat.`,
-				"slave professionalism": `belly wearing a tight black dress. ${HeA} is trying ${hisA} best to compose ${himselfA} and grow into a proper young ${womanA}, despite ${hisA} lack of control.`,
-				"petite admiration": `belly filling out a dress tailored for a ${girlA} taller than ${himA}. ${HisA} shortness makes ${hisA} pregnant belly look much bigger than it is.`,
-				"statuesque glorification": `belly wearing a too small dress. ${HeA}'s growing up fast and, given the size of ${hisA} belly, so is ${hisA} child.`,
+				"slave professionalism": `belly, wearing a tight black dress. ${HeA} is trying ${hisA} best to compose ${himselfA} and grow into a proper young ${womanA}, despite ${hisA} lack of control.`,
+				"petite admiration": `belly, filling out a dress tailored for a ${girlA} taller than ${himA}. ${HisA} shortness makes ${hisA} pregnant belly look much bigger than it is.`,
+				"statuesque glorification": `belly, wearing a too-small dress. ${HeA}'s growing up fast and, given the size of ${hisA} belly, so is ${hisA} child.`,
 			},
 			"fairy": {
 				"default": ``,
@@ -1252,7 +1253,7 @@ globalThis.PersonalAssistantAppearance = function() {
 				"roman revivalist": `fairy wearing a small handkerchief wrapped around ${himA} like a toga, with one tiny breast sticking out. A wreath made of twisted clovers sits on ${hisA} head.`,
 				"neoimperialist": `fairy, ${hisA} tiny body encased in a tight-fitting, high-tech bodysuit.`,
 				"aztec revivalist": `fairy, yellow paint creating tribal patterns across ${hisA} naked form.`,
-				"egyptian revivalist": `fairy wearing a simple white linen dress and has eye shadow poorly applied around ${hisA} eyes.`,
+				"egyptian revivalist": `fairy wearing a simple white linen dress and has eyeshadow poorly applied around ${hisA} eyes.`,
 				"edo revivalist": `fairy wearing a fine kimono and holding a little fan. ${HeA} looks like a little Hina doll.`,
 				"arabian revivalist": `fairy wearing a strip of silk as a dress.`,
 				"chinese revivalist": `fairy wearing a silk cheongsam with a little green cap on ${hisA} head. ${HisA} hair is braided on the sides. ${HeA} looks like a figurine from some kind of game.`,
@@ -1264,7 +1265,7 @@ globalThis.PersonalAssistantAppearance = function() {
 				"gender fundamentalist": `fairy wearing a well-sewn blue dress, with a large red bow tied to the back of ${hisA} waist length golden-blonde hair. ${HeA} looks like a little Bucuresti doll.`,
 				"asset expansionist": `fairy wearing a pair of pants and a t-shirt. ${HeA} has two blueberries stuffed into the front of ${hisA} shirt.`,
 				"transformation fetishist": `fairy wearing a pair of tight jeans and a t-shirt. ${HeA} has two grapes stuffed into ${hisA} shirt, and some cotton shoved in the back of ${hisA} jeans.`,
-				"pastoralist": `fairy wearing only a pair of overalls. The overalls are just loose enough to let ${hisA} nearly flat chest to peek out when ${heA} turns or bends over.`,
+				"pastoralist": `fairy wearing only a pair of overalls. The overalls are just loose enough to let ${hisA} nearly flat chest peek out when ${heA} turns or bends over.`,
 				"maturity preferentialist": `fairy wearing an old wool dress and spinning a cane.`,
 				"youth preferentialist": `fairy wearing a kindergartner's uniform, complete with rain cap and red backpack.`,
 				"slimness enthusiast": `fairy wearing a handkerchief with a hole in it like a poncho. ${HeA} looks as slim as usual, with ${hisA} naked body completely visible from the sides.`,
@@ -1278,19 +1279,19 @@ globalThis.PersonalAssistantAppearance = function() {
 				"default": ``,
 				"eugenics": `wearing nothing but a band with insignia of the Elite emblazoned on it.`,
 				"paternalist": `wearing a well-sewn blue dress, with a large red bow tied to the back of ${hisA} waist length golden-blonde hair. ${HeA} looks like a little Bucuresti doll.`,
-				"degradationist": `and completely unclothed, with ${hisA} hair in a mess and covered in dirt.`,
-				"supremacist": `and distinctly ${V.arcologies[0].FSSupremacistRace} features. ${HeA} has wrapped a golden ribbon around ${hisA} chest to create an improvised bra, and another under ${hisA} swollen belly to fashion a thong.`,
-				"subjugationist": `and exaggerated ${V.arcologies[0].FSSubjugationistRace} features. ${HeA} is completely unclothed, with ${hisA} hair in a mess and covered in dirt.`,
+				"degradationist": `and is completely unclothed, with ${hisA} hair in a mess and covered in dirt.`,
+				"supremacist": `and has distinctly ${V.arcologies[0].FSSupremacistRace} features. ${HeA} has wrapped a golden ribbon around ${hisA} chest to create an improvised bra, and another under ${hisA} swollen belly to fashion a thong.`,
+				"subjugationist": `and has exaggerated ${V.arcologies[0].FSSubjugationistRace} features. ${HeA} is completely unclothed, with ${hisA} hair in a mess and covered in dirt.`,
 				"roman revivalist": `wearing a small handkerchief wrapped around ${himA} like a toga, with one tiny milky breast sticking out. A wreath made of twisted clovers sits on ${hisA} head.`,
 				"neoimperialist": `whose tiny body is encased in a tight-fitting, high-tech bodysuit. ${HisA} belly swells underneath the skintight material.`,
-				"aztec revivalist": `smeared with yellow paint creating tribal patterns across ${hisA} naked form and curving around ${hisA} swollen belly.`,
-				"egyptian revivalist": `wearing a simple white linen dress and has eye shadow poorly applied around ${hisA} eyes.`,
+				"aztec revivalist": `smeared with yellow paint that creates tribal patterns across ${hisA} naked form and curves around ${hisA} swollen belly.`,
+				"egyptian revivalist": `wearing a simple white linen dress and eyeshadow poorly applied around ${hisA} eyes.`,
 				"edo revivalist": `wearing a fine kimono and holding a little fan. ${HeA} looks like a little Hina doll.`,
 				"arabian revivalist": `wearing a strip of silk as a dress.`,
 				"chinese revivalist": `wearing a silk cheongsam with a little green cap on ${hisA} head. ${HisA} hair is braided on the sides. ${HeA} looks like a figurine from some kind of game.`,
 				"chattel religionist": `wearing a little gold-white habit and glowing with purity.`,
 				"physical idealist": `wearing a training bra and spats. ${HisA} large belly sticks out even more.`,
-				"hedonistic decadence": `that is nude and sitting upon a large pastry, covered in cream. ${HeA} occasionally pulls off a piece to nibble on.`,
+				"hedonistic decadence": `totally nude and sitting upon a large pastry, covered in cream. ${HeA} occasionally pulls off a piece to nibble on.`,
 				"repopulation focus": `wearing a lovely maternity dress, which shows off ${hisA} swollen belly.`,
 				"gender radicalist": `wearing a pair of pants. Just the pants.`,
 				"gender fundamentalist": `wearing a well-sewn blue dress, with a large red bow tied to the back of ${hisA} waist length golden-blonde hair. ${HeA} looks like a little Bucuresti doll.`,
@@ -1300,39 +1301,39 @@ globalThis.PersonalAssistantAppearance = function() {
 				"maturity preferentialist": `wearing an old wool dress and rocking back and forth on a rocking chair, cradling ${hisA} belly.`,
 				"youth preferentialist": `wearing a kindergartner's uniform, complete with rain cap and red backpack. ${HisA} swollen belly looks out of place.`,
 				"slimness enthusiast": `wearing a handkerchief with a hole in it like a poncho. ${HisA} pregnant belly forces the poncho to spread wide, leaving little of ${hisA} body to the imagination.`,
-				"body purist": `wearing ${hisA} birthday suit, with pale unblemished pregnant belly on full display and silky golden hair cascading down ${hisA} back.`,
+				"body purist": `wearing only ${hisA} birthday suit, ${hisA} pale unblemished pregnant belly on full display and silky golden hair cascading down ${hisA} back.`,
 				"intellectual dependency": `wearing a thong as a string bikini. ${HeA} frequently pouts over all the weight ${heA} has been putting on lately.`,
 				"slave professionalism": `wearing a graduation gown.`,
-				"petite admiration": `wearing ${hisA} birthday suit, with ${hisA} nude form obscured by the light ${hisA} belly. ${HeA}'s recently adjusted ${hisA} size so that, at a glance, ${heA} appears to be nothing more than a glowing oval.`,
+				"petite admiration": `wearing ${hisA} birthday suit, with ${hisA} nude form obscured by the light coming from ${hisA} belly. ${HeA}'s recently adjusted ${hisA} size so that, at a glance, ${heA} appears to be nothing more than a glowing oval.`,
 				"statuesque glorification": `wearing a simple dress. ${HeA}'s adjusted the length of ${hisA} dress to make it appear that ${heA} is taller than ${heA} really is, but it keeps riding up ${hisA} middle and ruining the look.`,
 			},
 			"slimegirl": {
 				"default": ``,
-				"paternalist": `slime with a modest pink dress floating inside ${himA}.`,
+				"paternalist": `slime, with a modest pink dress floating inside ${himA}.`,
 				"supremacist": `slime. ${HeA} keeps trying to shape ${hisA} goo into a beautiful ${V.arcologies[0].FSSupremacistRace} ${girlA}, but ${heA} hasn't quite perfected the finer details yet.`,
 				"subjugationist": `slime. ${HeA} keeps trying to shape ${hisA} goo into a pretty face, but keeps ending up with over-exaggerated ${V.arcologies[0].FSSubjugationistRace} features instead.`,
-				"roman revivalist": `slime with a ${girlA}'s stola sinking into ${hisA} head.`,
-				"neoimperialist": `slime wearing a high-class suit that fits loosely around ${hisA} gelatinous features, occasionally slipping inside the slime.`,
-				"egyptian revivalist": `slime and quite perturbed about the amount of sand caught in ${himA}.`,
-				"edo revivalist": `slime with a silken kimono floating inside ${himA}.`,
-				"arabian revivalist": `slime with a headscarf and a pair of sunglasses floating inside ${himA}.`,
+				"roman revivalist": `slime, with a ${girlA}'s stola sinking into ${hisA} head.`,
+				"neoimperialist": `slime, wearing a high-class suit that fits loosely around ${hisA} gelatinous features, occasionally slipping inside the slime.`,
+				"egyptian revivalist": `slime, and quite perturbed about the amount of sand caught in ${himA}.`,
+				"edo revivalist": `slime, with a silken kimono floating inside ${himA}.`,
+				"arabian revivalist": `slime, with a headscarf and a pair of sunglasses floating inside ${himA}.`,
 				"aztec revivalist": `slime.`, // TODO: missing in SC, expand someday.
-				"chinese revivalist": `slime with a silk qipao floating inside ${himA}.`,
-				"chattel religionist": `slime with several symbols of the new faith floating inside ${himA}.`,
+				"chinese revivalist": `slime, with a silk qipao floating inside ${himA}.`,
+				"chattel religionist": `slime, with several symbols of the new faith floating inside ${himA}.`,
 				"repopulation focus": `slime. ${HisA} amorphous body has noticeable hip, butt, and breast curves as well as several more cores gathered in ${hisA} rounded stomach.`,
-				"eugenics": `slime with a chastity belt floating inside ${himA}.`,
-				"degradationist": `slime with a number of piercings sinking into ${hisA} body.`,
-				"physical idealist": `slime and trying to shape ${hisA} goo into muscles.`,
+				"eugenics": `slime, with a chastity belt floating inside ${himA}.`,
+				"degradationist": `slime, with a number of piercings sinking into ${hisA} body.`,
+				"physical idealist": `slime, doing ${hisA} best to shape ${hisA} goo into muscles.`,
 				"hedonistic decadence": `slime. ${HeA} has accumulated a large amount of excess goo, giving ${himA} quite a corpulent shape.`,
 				"gender radicalist": `slime. ${HeA} keeps trying to shape ${hisA} goo into a cock.`,
 				"gender fundamentalist": `slime. ${HisA} amorphous body has noticeable hip, butt, and breast curves.`,
 				"asset expansionist": `slime. ${HisA} amorphous body has ridiculously huge hip, butt, and breast curves.`,
-				"transformation fetishist": `slime with a pair of big silicone implants floating around ${hisA} chest.`,
-				"pastoralist": `slime with quite a large amount of milk mixed with ${hisA} body. ${HeA} keeps trying to shape ${hisA} goo into big milky tits.`,
+				"transformation fetishist": `slime, with a pair of big silicone implants floating around ${hisA} chest.`,
+				"pastoralist": `slime, with quite a large amount of milk mixed with ${hisA} body. ${HeA} keeps trying to shape ${hisA} goo into big milky tits.`,
 				"maturity preferentialist": `slime. ${HisA} core is noticeably larger and shows signs of splitting many times.`,
-				"youth preferentialist": `slime. ${HisA} core is as immature as ${hisA} body`,
+				"youth preferentialist": `slime. ${HisA} core is as immature as ${hisA} body.`,
 				"slimness enthusiast": `slime. ${HeA} is compacting ${hisA} slime to make ${himselfA} look thinner.`,
-				"body purist": `slime with the purest goo ${hisA} body could be made of.`,
+				"body purist": `slime, with the purest goo ${hisA} body could be made of.`,
 				"intellectual dependency": `slime.`,
 				"slave professionalism": `slime.`,
 				"petite admiration": `slime.`,
@@ -1347,12 +1348,12 @@ globalThis.PersonalAssistantAppearance = function() {
 				"roman revivalist": `${HeA} is wearing a fine stola appropriate for a respectable Roman lady, with ${hisA} hair up in a complicated style.`,
 				"neoimperialist": `${HeA} is wearing a skintight bodysuit that gives ${himA} the appearance of some kind of techno-angel, cybernetics and angelic beauty meshing seamlessly together.`,
 				"aztec revivalist": `${HeA} is wearing a modest huipil with ${hisA} hair braided to two ponytails; ${heA}'s the picture of quiet elegance.`,
-				"egyptian revivalist": `${HeA} is wearing a simple white linen dress, kohl eye shadow, sandals, and a serene expression.`,
+				"egyptian revivalist": `${HeA} is wearing a simple white linen dress, kohl eyeshadow, sandals, and a serene expression.`,
 				"edo revivalist": `${HeA} is wearing a fine kimono with slits for ${hisA} wings, getae, tabi, and an expression of perfect serenity.`,
 				"arabian revivalist": `${HeA} is wearing a tailored suit, a silk headscarf, and aviator sunglasses, making ${himA} look ridiculous.`,
 				"chinese revivalist": `${HeA} is wearing a conservative silk qipao with special slits for ${hisA} wings. ${HisA} hair is pulled back into a bun and secured by a couple of chopsticks.`,
-				"chattel religionist": `${HeA} has adjusted ${hisA} outfit to consist of nothing but the symbol of your new religion carefully tailored to cover ${hisA} nipples and crotch. ${HeA} wears another around ${hisA} neck and a blush on ${hisA} cheeks.`,
-				"physical idealist": `${HeA} has swapped out ${hisA} usual linen dress for one that shows off ${hisA} toned arms, legs and abs.`,
+				"chattel religionist": `${HeA} has adjusted ${hisA} outfit to consist of nothing but the symbol of your new religion, carefully tailored to cover ${hisA} nipples and crotch. ${HeA} wears another around ${hisA} neck and a blush on ${hisA} cheeks.`,
+				"physical idealist": `${HeA} has swapped out ${hisA} usual linen dress for one that shows off ${hisA} toned arms, legs, and abs.`,
 				"hedonistic decadence": `${HeA} has swapped out ${hisA} usual linen dress for one that covers ${hisA} plush curves. ${HeA} finds walking easier than trying to fly with ${hisA} weighty body.`,
 				"repopulation focus": `${HisA} simple white linen dress is parted by ${hisA} full term pregnancy; likely a lost soul being given a new chance.`,
 				"eugenics": `${HeA} has swapped out ${hisA} usual linen dress for a fabulous one to match ${hisA} perfect appearance. ${HeA} proudly wears the symbol of high society on ${hisA} arm and, judging by the slight curve to ${hisA} middle, is growing a child just as beautiful as ${himA}.`,
@@ -1360,7 +1361,7 @@ globalThis.PersonalAssistantAppearance = function() {
 				"gender fundamentalist": `${HeA} wears a simple white linen dress that struggles to cover both ${hisA} full breasts and child-bearing hips.`,
 				"asset expansionist": `${HeA} has recently given up on trying to cover ${hisA} arm-filling breasts, resorting to just wearing a skirt; a skirt that strains against ${hisA} enormous rear. ${HeA} certainly won't be flying anyway.`,
 				"transformation fetishist": `${HeA} wears a simple white linen dress that struggles to contain ${hisA} big, perky, obviously fake breasts.`,
-				"pastoralist": `${HeA} wears a simple white linen dress that struggles to cover ${hisA} full breasts. ${HeA} frequently tries to hide ${hisA} nipples; ${hisA} milk having rendered ${hisA} dress transparent.`,
+				"pastoralist": `${HeA} wears a simple white linen dress that struggles to cover ${hisA} full breasts. ${HeA} frequently tries to hide ${hisA} nipples, ${hisA} milk having rendered ${hisA} dress transparent.`,
 				"maturity preferentialist": `${HeA} wears a simple white linen dress and has recently altered appearance to be more mature. ${HisA} face is one of experience and ${hisA} hair has streaks of silver.`,
 				"youth preferentialist": `${HeA} wears a simple white linen dress that tastefully hugs ${hisA} youthful body. ${HeA} looks barely ${num(V.minimumSlaveAge, true)}; a tantalizing risk.`,
 				"slimness enthusiast": `${HeA} wears a simple white linen dress that tastefully hugs ${hisA} thin body.`,
@@ -1375,32 +1376,32 @@ globalThis.PersonalAssistantAppearance = function() {
 					return r;
 				},
 				"slave professionalism": `${HeA} wears a flowing white linen dress that highlights ${hisA} grace.`,
-				"petite admiration": `${HeA} wears a simple white linen dress that trails along after ${himA} when ${heA} walks. ${HeA}'s fine with this since flying makes ${himA} look tall.`,
+				"petite admiration": `${HeA} wears a simple white linen dress that trails along after ${himA} when ${heA} walks. ${HeA}'s fine with this, since flying makes ${himA} look tall.`,
 				"statuesque glorification": `${HeA} wears a long white linen dress, while concealing, shows off ${hisA} pleasant curves and long legs.`,
 			},
 			"cherub": {
 				"default": ``,
 				"paternalist": `${HeA} has swapped ${hisA} usual short skirt for a much longer one. No more panty flashes for you!`,
 				"degradationist": `${HeA} is wearing black lipstick along with ${hisA} usual white linen dress with a short skirt. Occasionally you get a glance up that skirt; a dark black thong greets you.`,
-				"supremacist": `${HeA} is wearing a cute little dressed stitched with designs from ${V.arcologies[0].FSSupremacistRace} culture. Occasionally you get a glance up it; a white pair of panties with similar designs say hello.`,
+				"supremacist": `${HeA} is wearing a cute little dress stitched with designs from ${V.arcologies[0].FSSupremacistRace} culture. Occasionally you get a glance up it; a white pair of panties with similar designs say hello.`,
 				"subjugationist": `${HeA} is shackled to an iron ball and chain that's almost as big as ${heA} is, and ${heA} has to slowly and comically drag it behind ${himA} to get anywhere. Occasionally ${heA} tumbles over in ${hisA} struggles, flipping ${hisA} white linen dress up and treating you to a good look at ${hisA} panties.`,
 				"roman revivalist": `${HeA} is wearing a cute little tunic. Occasionally you get a glance up it; a cute little pussy says hello.`,
 				"neoimperialist": `${HeA} is wearing a tiny executive skirt that mixes cute and professional. ${HeA}'s obviously not wearing any panties underneath.`,
 				"aztec revivalist": `${HeA} is wearing a huipil with ${hisA} hair braided to two ponytails. You can clearly see through the sides that ${heA} has chosen to forgo underwear.`,
-				"egyptian revivalist": `${HeA} is wearing a simple white linen dress, kohl eye shadow, and a serene expression. ${HisA} dress hangs low enough to block your view, unfortunately.`,
+				"egyptian revivalist": `${HeA} is wearing a simple white linen dress, kohl eyeshadow, and a serene expression. ${HisA} dress hangs low enough to block your view, unfortunately.`,
 				"edo revivalist": `${HeA} is wearing a cute little kimono with slits for ${hisA} wings. Occasionally you get a glance up it; a lovely pair of panties say hello.`,
 				"arabian revivalist": `${HeA} wears a fine dress, a silk headscarf, aviator sunglasses, and an overly conservative posture. No seeing up ${hisA} dress for you!`,
 				"chinese revivalist": `${HeA} is wearing a conservative silk qipao with special slits for ${hisA} wings. ${HisA} hair is pulled back into a bun and secured by a couple of chopsticks. It you try really hard, you can get a peek of ${hisA} panties as ${heA} flutters by.`,
-				"chattel religionist": `${HeA} has adjusted ${hisA} outfit to consist of nothing but the symbol of your new religion carefully tailored to cover ${hisA} nipples and crotch. Another dangles from ${hisA} neck. ${HisA} attire leaves little to the imagination.`,
+				"chattel religionist": `${HeA} has adjusted ${hisA} outfit to consist of nothing but the symbol of your new religion, carefully tailored to cover ${hisA} nipples and crotch. Another dangles from ${hisA} neck. ${HisA} attire leaves little to the imagination.`,
 				"physical idealist": `${HeA} has chosen to ditch ${hisA} usual linen dress for nothing but ${hisA} undies in order to show off ${hisA} muscles.`,
 				"hedonistic decadence": `${HeA} has become so plump lately that no amount of tugging will get ${hisA} linen dress to cover ${hisA} exposed panties. ${HeA} struggles to stay aloft with such a plush body.`,
-				"repopulation focus": `${HeA} has chosen to ditch ${hisA} usual linen dress for just ${hisA} panties. ${HeA} struggles to fly with ${hisA} heavy pregnancy and milk laden breasts.`,
+				"repopulation focus": `${HeA} has chosen to ditch ${hisA} usual linen dress for just ${hisA} panties. ${HeA} struggles to fly with ${hisA} heavy pregnancy and milk-laden breasts.`,
 				"eugenics": `${HeA} wears simple white linen dress with a short skirt that frequently lets you catch glimpses of ${hisA} chastity belt.`,
 				"gender radicalist": `${HeA} wears simple white linen dress with a short skirt that frequently lets you catch glimpses of ${hisA} panties. ${HeA} has become rather boyish lately and you swear that there is a slight bulge in ${hisA} panties.`,
 				"gender fundamentalist": `${HeA} wears a simple white linen dress that struggles to cover both ${hisA} full breasts and child-bearing hips. ${HisA} short skirt frequently rides you to give you a lovely view of ${hisA} panties.`,
 				"asset expansionist": `${HeA} has recently taken to wearing nothing put ${hisA} panties, having given up on fitting into ${hisA} dress. ${HeA} struggles to fly with ${hisA} massive tits weighing ${himA} down, and ${heA} commonly has to pause to pull ${hisA} underwear out of ${hisA} buttcrack.`,
 				"transformation fetishist": `${HeA} wears a simple white linen dress that struggles to cover both ${hisA} big fake breasts and ass. ${HisA} short skirt feebly rests atop ${hisA} panty devouring rear, giving you a lovely view.`,
-				"pastoralist": `${HeA} has begun leaving the top of ${hisA} white linen dress open to allow ${hisA} milk laden breasts to hang free. ${HeA} tends to leave a trail where ever ${heA} flies.`,
+				"pastoralist": `${HeA} has begun leaving the top of ${hisA} white linen dress open to allow ${hisA} milk-laden breasts to hang free. ${HeA} tends to leave a trail wherever ${heA} flies.`,
 				"maturity preferentialist": `${HeA} has recently updated ${hisA} appearance to be more mature; an air of experience follows ${himA} as ${heA} flies around. ${HeA} a wears simple white linen dress with a short skirt that frequently lets you catch glimpses of ${hisA} panties; polka-dotted, oddly enough.`,
 				"youth preferentialist": `${HeA} has recently updated ${hisA} appearance to be more youthful. ${HeA} frequently flutters by, enjoying ${hisA} youthful vigor. ${HeA} a wears simple white linen dress with a short skirt that frequently lets you catch glimpses of ${hisA} panties; an adorable pair of bloomers.`,
 				"slimness enthusiast": `${HeA} wears simple white linen dress with a short skirt that hangs loosely off ${hisA} pleasantly thin body. ${HisA} panties are obviously a bit loose too, as ${heA} frequently has to stop, swoop down and retrieve them whenever they fall off ${hisA} flat ass.`,
@@ -1437,7 +1438,7 @@ globalThis.PersonalAssistantAppearance = function() {
 				"hedonistic decadence": `${HeA} has become rather chubby lately. ${HeA} may want to change up ${hisA} routine of tormenting the hungry by devouring food before them.`,
 				"repopulation focus": `${HeA}'s added a pair of tight belts across ${hisA} stomach recently. The taut material painfully digs into ${hisA} growing pregnancy.`,
 				"eugenics": `${HeA} has an iron chastity belt under ${hisA} loincloth and two large bulges in ${hisA} middle. You don't have to guess ${heA} has a pair of enormous dildos locked inside ${himA}.`,
-				"gender radicalist": `${HeA}'s recently begun rendering ${himselfA} more androgynous. Something can be seen commonly tenting ${hisA} loincloth; whenever it shifts to the side, you catch sight of a thumb sized and heavily pierced clitoris.`,
+				"gender radicalist": `${HeA}'s recently begun rendering ${himselfA} more androgynous. Something can be seen commonly tenting ${hisA} loincloth; whenever it shifts to the side, you catch sight of a thumb-sized and heavily pierced clitoris.`,
 				"gender fundamentalist": `${HeA}'s recently increased the size of ${hisA} breasts and width of ${hisA} hips. The belt around ${hisA} chest tightly binds ${hisA} new bust and causes its flesh to bulge and jiggle delightfully.`,
 				"asset expansionist": `${HeA}'s had to let out ${hisA} chest belt to accommodate ${hisA} new excessive bust, but only a little; the belt creates a deep canyon across ${hisA} chest with plenty of flesh bulging above and below the straining leather.`,
 				"transformation fetishist": `${HeA}'s had to let out ${hisA} chest belt to accommodate ${hisA} new excessive bust, but only a little; the belt creates a deep canyon across ${hisA} fake chest and threatens to painfully pop the underlying implants.`,
@@ -1453,14 +1454,14 @@ globalThis.PersonalAssistantAppearance = function() {
 			},
 			"witch": {
 				"default": ``,
-				"paternalist": `${HeA} still hasn't managed to undo the spell; ${hisA} chest is still unnaturally smooth, not one nipple peaks the fabric of the robe.`,
+				"paternalist": `${HeA} still hasn't managed to undo the spell; ${hisA} chest is still unnaturally smooth, not one nipple peaking the fabric of the robe.`,
 				"degradationist": `${HeA} still hasn't managed to undo the spell; ${hisA} face, hands and every surface of ${hisA} body are completely covered in tattoos. It is especially noticeable when ${heA} talks that ${hisA} tongue is tattooed too; wonder what decorates the surfaces of ${hisA} body you can't see?`,
 				get "supremacist"() {
 					const r = [`${HeA}'s managed to correct the spell, and even succeed in it. ${HeA} is now`];
 					if (V.arcologies[0].FSSupremacistRace === "mixed race") {
 						r.push(`the perfect blend of every ethnicity, with all of their best qualities and none of their flaws.`);
 					} else {
-						r.push(`ethnically 100 % pure ${V.arcologies[0].FSSupremacistRace}.`);
+						r.push(`ethnically 100% pure ${V.arcologies[0].FSSupremacistRace}.`);
 					}
 					r.push(`If ${heA} were real, ${heA} would make the perfect breeding stock for the next generation of the master race.`);
 					return r.join(" ");
@@ -1487,16 +1488,18 @@ globalThis.PersonalAssistantAppearance = function() {
 				"gender radicalist": `${HeA} has chosen to embrace the outcome of ${hisA} spell; ${heA} either sports a bulge or a tent in the front of ${hisA} dress and can frequently be seen reading books on male anatomy.`,
 				"gender fundamentalist": `${HeA} still hasn't managed to undo the spell; ${hisA} belly has become so swollen with ovum ${heA} looks ready to birth triplets. ${HeA} can barely concentrate; ${hisA} mind focused entirely on dicks cumming in ${hisA} wet pussy, but ${heA} can't risk it, knowing full well ${heA}'d become so pregnant ${heA}'d likely burst. ${HisA} ample breasts and child bearing hips only make it harder to keep away from cocks.`,
 				"asset expansionist": `${HeA}'s managed to partially undo the spell; ${hisA} breasts are merely as big as ${heA} is now. One simple, correctly performed, levitation spell later and ${heA} is fully capable of functioning with ${hisA} oversized tits.`,
-				"transformation fetishist": `While ${heA} has managed to regain ${hisA} flexibility, ${heA} still greatly resembles an overinflated blow-up doll. ${HisA} lips are stuck in an O shape, ${hisA} breasts are the size of beach balls, ${hisA} ass and thighs larger than any ${girlA}'s you've seen, and above all else is ${hisA} huge medicine ball sized belly; fortunately they don't weigh nearly as much as they should, part of the benefits of being an inflatable sex-doll.`,
-				"pastoralist": `${HeA}'s managed to shrink ${hisA} nine breasts somewhat; they are merely head sized now. The front of ${hisA} robes is strained from ${hisA} excessive number of milky tits.`,
-				"maturity preferentialist": `${HeA}'s managed to reign in ${hisA} aging spell and with a little size up to ${hisA} breasts, hips and ass makes a very pleasant MILF.`,
+				"transformation fetishist": `While ${heA} has managed to regain ${hisA} flexibility, ${heA} still greatly resembles an overinflated blow-up doll. ${HisA} lips are stuck in an O shape, ${hisA} breasts are the size of beach balls, ${hisA} ass and thighs are larger than any ${girlA}'s you've seen, and above all else is ${hisA} huge medicine ball sized belly; fortunately they don't weigh nearly as much as they should, part of the benefits of being an inflatable sex-doll.`,
+				"pastoralist": `${HeA}'s managed to shrink ${hisA} nine breasts somewhat; they are merely head-sized now. The front of ${hisA} robes is strained from ${hisA} excessive number of milky tits.`,
+				"maturity preferentialist": `${HeA}'s managed to reign in ${hisA} aging spell, and with a little size up to ${hisA} breasts, hips, and ass, makes a very pleasant MILF.`,
 				get "youth preferentialist"() {
 					if (V.minimumSlaveAge === 3) {
 						return `${HeA}'s adjusted ${hisA} tiny body slightly to be less feeble. Now ${heA} is a fully capable and adorable toddler witch in an oversized robe, though ${heA} has to fight to keep ${hisA} hat from covering ${hisA} entire head.`;
 					} else if (V.minimumSlaveAge <= 7) {
-						return `${HeA}'s decided to embrace ${hisA} spell and now appears as an adorable ${loliA} witch. ${HeA} has to watch ${hisA} step to not trip over ${hisA} trailing robe and has to constantly readjust ${hisA} head devouring hat.`;
-					} else if (V.minimumSlaveAge <= 13) {
-						return `${HeA}'s decided to embrace ${hisA} spell and now appears as a cute teenage witch. ${HisA} robe is a little long, but ${heA} manages just fine.`;
+						return `${HeA}'s decided to embrace ${hisA} spell and now appears as an adorable ${loliA} witch. ${HeA} has to watch ${hisA} step to not trip over ${hisA} trailing robe and has to constantly readjust ${hisA} head-devouring hat.`;
+					} else if (V.minimumSlaveAge <= 12) {
+						return `${HeA}'s decided to embrace ${hisA} spell and now appears as a cute preteen witch. ${HisA} robe is a little long, but ${heA} manages just fine.`;
+					} else if (V.minimumSlaveAge < 18) {
+						return `${HeA}'s decided to embrace ${hisA} spell and now appears as a budding teenaged witch.`;
 					} else {
 						return `${HeA}'s decided to embrace ${hisA} spell and now appears as a witch fresh into adulthood.`;
 					}
@@ -1505,7 +1508,7 @@ globalThis.PersonalAssistantAppearance = function() {
 				"body purist": `${HeA} has attempted to fix ${hisA} misspell and succeeded in preventing ${hisA} clothes from becoming transparent, to ${himselfA} only. ${HeA} appears nude, even though ${heA} is fully clothed, much to everyone's enjoyment.`,
 				"intellectual dependency": `${HeA} still hasn't managed to figure out that ${heA} drained ${hisA} intelligence; not that it matters when all your spells now have so many fun effects! (And you can't read.)`,
 				"slave professionalism": `${HeA}'s managed to work out some of the kinks of the spell, though it's left ${himA} quite the perfectionist.`,
-				"petite admiration": `${HeA}'s decided to embrace ${hisA} spell, and with a strength booster, manages quite fine with ${hisA} proportionately mountainous tits.`,
+				"petite admiration": `${HeA}'s decided to embrace the shortening effect of ${hisA} spell, and with a strength booster, manages quite fine with ${hisA} proportionately mountainous tits.`,
 				"statuesque glorification": `${HeA}'s managed to correct the spell, and even succeed in it. ${HeA} stands tall, proud at ${hisA} success.`,
 			},
 			"ERROR_1606_APPEARANCE_FILE_CORRUPT": {
@@ -1533,21 +1536,23 @@ globalThis.PersonalAssistantAppearance = function() {
 				},
 				"eugenics": `wearing nothing at all. You can't take your eyes off of ${hisA} perfect body, but at the same time, you feel a strange sense of danger about ${himA}.`,
 				"gender radicalist": `wearing nothing at all. Even though ${heA} lacks a penis, you can't shake the feeling that it's a trap.`,
-				"gender fundamentalist": `full breasts, wide hips and wearing absolutely nothing. You swear ${hisA} tits are moving slightly and an unusual bulge can be seen writhing in ${hisA} lower belly.`,
-				"asset expansionist": `wearing nothing at all; not that anything could fit ${himA}. ${HeA} is absolutely massive; ${hisA} breasts easily dwarfing the rest of ${hisA} body and quivering obscenely. Every so often, a bulge moves up a nipple as a wormlike creature is born into the world.`,
-				"transformation fetishist": `wearing nothing at all; not that anything could fit ${himA}. ${HisA} breasts and ass are splitting around the massive, round objects distending them. The orbs are slightly translucent; lots of small wormlike creatures can be seen squirming within.`,
-				"pastoralist": `wearing nothing at all; not that anything could fit ${himA}. ${HeA} is absolutely massive; ${hisA} breasts easily dwarfing the rest of ${hisA} body and quivering obscenely. An extremely dense, white liquid is steadily forcing its way from ${hisA} gaping nipples.`,
+				"gender fundamentalist": `full breasts, wide hips, and no clothing at all. You swear ${hisA} tits are moving slightly and an unusual bulge can be seen writhing in ${hisA} lower belly.`,
+				"asset expansionist": `wearing nothing at all, not that anything could fit ${himA}. ${HeA} is absolutely massive, ${hisA} breasts easily dwarfing the rest of ${hisA} body and quivering obscenely. Every so often, a bulge moves up a nipple as a wormlike creature is born into the world.`,
+				"transformation fetishist": `wearing nothing at all, not that anything could fit ${himA}. ${HisA} breasts and ass are splitting around the massive, round objects distending them. The orbs are slightly translucent; lots of small wormlike creatures can be seen squirming within.`,
+				"pastoralist": `wearing nothing at all, not that anything could fit ${himA}. ${HeA} is absolutely massive, ${hisA} breasts easily dwarfing the rest of ${hisA} body and quivering obscenely. An extremely dense, white liquid is steadily forcing its way from ${hisA} gaping nipples.`,
 				"maturity preferentialist": `wearing nothing at all. ${HeA} seems to be quite old and vulnerable, but something feels off about ${himA}.`,
 				get "youth preferentialist"() {
 					const r = [`wearing nothing at all.`];
 					if (V.minimumSlaveAge === 3) {
-						r.push(`${HeA}'s an adorable toddler just ripe for the taking; though a feeling of danger radiates from ${hisA} tiny body.`);
+						r.push(`${HeA}'s an adorable toddler just ripe for the taking, though a feeling of danger radiates from ${hisA} tiny body.`);
 					} else if (V.minimumSlaveAge <= 7) {
-						r.push(`${HeA}'s a cute ${loliA} and ripe for the taking; though a feeling of danger radiates from ${hisA} small body.`);
-					} else if (V.minimumSlaveAge <= 13) {
-						r.push(`${HeA}'s a pretty teenager and ripe for the taking; though a feeling of danger radiates from ${himA}.`);
+						r.push(`${HeA}'s a cute ${loliA} and ripe for the taking, though a feeling of danger radiates from ${hisA} small body.`);
+					} else if (V.minimumSlaveAge <= 12) {
+						r.push(`${HeA}'s a charming preteen and ripe for the taking, though a feeling of danger radiates from ${hisA} growing body.`);
+					} else if (V.minimumSlaveAge < 18) {
+						r.push(`${HeA}'s a pretty teenager and ripe for the taking, though a feeling of danger radiates from ${himA}.`);
 					} else {
-						r.push(`${HeA} seems to be fresh into adulthood and ripe for the taking; though a feeling of danger radiates from ${himA}.`);
+						r.push(`${HeA} seems to be fresh into adulthood and ripe for the taking, though a feeling of danger radiates from ${himA}.`);
 					}
 					return r.join(" ");
 				},
@@ -1578,7 +1583,7 @@ globalThis.PersonalAssistantAppearance = function() {
 				get "eugenics"() {
 					const r = [`${HeA}'s become even more irresistible lately;`];
 					if (V.PC.vagina !== -1) {
-						r.push(`you can't help but think of that perfect cock cumming deep in your pussy and your belly rounding with a gorgeous child.`);
+						r.push(`you can't help but think of that perfect cock cumming deep in your pussy, and your belly rounding with a gorgeous child.`);
 					} else {
 						r.push(`the children sired by such a stud are unimaginable.`);
 					}
@@ -1586,11 +1591,11 @@ globalThis.PersonalAssistantAppearance = function() {
 				},
 				get "gender radicalist"() {
 					if (V.arcologies[0].FSGenderRadicalistLawFuta === 1) {
-						return `${HeA} is wearing nothing at all and has recently rendered ${himselfA} slightly more feminine. ${HeA} makes sure to make exaggerated motions to show off the pussy hidden beneath ${hisA} swinging nuts.`;
+						return `${HeA} is wearing nothing at all, and has recently rendered ${himselfA} slightly more feminine. ${HeA} makes sure to make exaggerated motions to show off the pussy hidden beneath ${hisA} swinging nuts.`;
 					} else if (V.arcologies[0].FSGenderRadicalistLawFuta === 2) {
 						return `${HeA} has recently increased the size of ${hisA} genitals and has given up trying to wear pants; they just get in the way of ${hisA} prominent erection.`;
 					} else if (V.arcologies[0].FSGenderRadicalistLawFuta === 3) {
-						return `${HeA} is wearing nothing at all; not that anything could fit ${himA}. ${HisA} cock and balls are utterly dwarfed by ${hisA} door-jamming hips, massive ass and extra thick thighs.`;
+						return `${HeA} is wearing nothing at all, not that anything could fit ${himA}. ${HisA} cock and balls are utterly dwarfed by ${hisA} door-jamming hips, massive ass, and extra thick thighs.`;
 					} else if (V.arcologies[0].FSGenderRadicalistLawFuta === 4) {
 						return `${HeA} is wearing loose clothing and has recently rendered ${himselfA} slightly more feminine. ${HeA} does ${hisA} best to appear the perfect little femboy despite what's slipping down ${hisA} pant leg.`;
 					} else {
@@ -1598,17 +1603,19 @@ globalThis.PersonalAssistantAppearance = function() {
 					}
 				},
 				"gender fundamentalist": `${HeA} is wearing a cute dress that tightly hugs ${hisA} attractive curves. ${HeA} may be rendering ${himselfA} more feminine, but can't hide the bulge under ${hisA} skirt.`,
-				"asset expansionist": `${HeA} is wearing nothing at all; not that anything could fit ${himA}. ${HisA} cock and balls are so large they reach the ground when ${heA} stands.`,
+				"asset expansionist": `${HeA} is wearing nothing at all, not that anything could fit ${himA}. ${HisA} cock and balls are so large they reach the ground when ${heA} stands.`,
 				"transformation fetishist": `${HeA} is wearing jeans and a tight shirt. ${HisA} overly long erection runs up ${hisA} front and protrudes out the neck of ${hisA} top.`,
-				"pastoralist": `${HeA} is wearing nothing at all; not that anything could fit ${himA}. ${HisA} balls are absolutely massive; ${hisA} sizable cock looks tiny resting atop them. ${HeA} can barely take a step without overstimulating and orgasming across ${hisA} sack.`,
+				"pastoralist": `${HeA} is wearing nothing at all, not that anything could fit ${himA}. ${HisA} balls are absolutely massive; ${hisA} sizable cock looks tiny resting atop them. ${HeA} can barely take a step without overstimulating and orgasming across ${hisA} sack.`,
 				"maturity preferentialist": `${HeA} has recently begun presenting ${himselfA} as an experienced, mature man with an oddly familiar mustache and goatee.`,
 				get "youth preferentialist"() {
-					const r = [`${HeA} has recently adjusted ${hisA} age to reflect your youth focused society.`];
+					const r = [`${HeA} has recently adjusted ${hisA} age to reflect your youth-focused society.`];
 					if (V.minimumSlaveAge === 3) {
 						r.push(`${HeA}'s an adorable toddler with an enormous cock hanging from ${hisA} shorts.`);
 					} else if (V.minimumSlaveAge <= 7) {
 						r.push(`${HeA}'s a cute shota with ball-filled shorts and a huge erection sneaking up ${hisA} shirt.`);
-					} else if (V.minimumSlaveAge <= 13) {
+					} else if (V.minimumSlaveAge <= 12) {
+						r.push(`${HeA}'s a charming preteen with a scandalous bulge running more than halfway down ${hisA} pant leg.`);
+					} else if (V.minimumSlaveAge < 18) {
 						r.push(`${HeA}'s an attractive teenager with an immodest bulge running down ${hisA} pant leg.`);
 					} else {
 						r.push(`${HeA}'s an attractive young adult with an immodest bulge running down ${hisA} pant leg.`);
@@ -1619,7 +1626,7 @@ globalThis.PersonalAssistantAppearance = function() {
 				"body purist": `${HeA} is wearing nothing at all, happy to show off ${hisA} flawless body. ${HisA} cock and balls are now the ideal size to penetrate a natural girl.`,
 				get "intellectual dependency"() {
 					if (V.arcologies[0].FSIntellectualDependencyLawBeauty === 1) {
-						return `${HeA} is wearing nothing but a pair of jeans with the fly down to let ${hisA} junk hang loose. ${HeA} likes ${hisA} sex simple and straightforward. (The button is too difficult for ${himA}.)`;
+						return `${HeA} is wearing nothing but a pair of jeans, with the fly down to let ${hisA} junk hang loose. ${HeA} likes ${hisA} sex simple and straightforward. (The button is too difficult for ${himA}.)`;
 					} else {
 						return `${HeA} is wearing nothing at all; it would just get in the way. ${HeA}'s hard and ready to go, not that ${heA} could think of anything else to do.`;
 					}
@@ -1674,17 +1681,19 @@ globalThis.PersonalAssistantAppearance = function() {
 					}
 				},
 				"gender fundamentalist": `${HeA} is wearing a form fitting dress that emphasizes ${hisA} feminine curves. A gorgeous sight, given that ${heA} has recently adjusted ${hisA} body to be a lovely future mother.`,
-				"asset expansionist": `${HeA} is wearing nothing at all; not that anything could fit ${himA}. ${HisA} breasts nearly touch the ground when ${heA} stands, yet are naturally perky. ${HisA} butt is so enormous it is a wonder ${heA} can even walk.`,
+				"asset expansionist": `${HeA} is wearing nothing at all, not that anything could fit ${himA}. ${HisA} breasts nearly touch the ground when ${heA} stands, yet are naturally perky. ${HisA} butt is so enormous it is a wonder ${heA} can even walk.`,
 				"transformation fetishist": `${HeA} is wearing a minidress so tight it fully outlines ${hisA} huge butt implants and barely contains the lower half of ${hisA} beach ball sized tits.`,
-				"pastoralist": `${HeA} is wearing a pair of cow-print bikinis over ${hisA} head sized breasts. A quartet of wet spots adorn ${hisA} tops at all times.`,
+				"pastoralist": `${HeA} is wearing a pair of cow-print bikinis over ${hisA} head-sized breasts. A quartet of wet spots adorn ${hisA} tops at all times.`,
 				"maturity preferentialist": `${HeA} has recently begun presenting ${himselfA} as an experienced, mature ${womanA}; one can only wonder what positions and tricks ${heA} knows.`,
 				get "youth preferentialist"() {
-					const r = [`${HeA} has recently adjusted ${hisA} age to reflect your youth focused society.`];
+					const r = [`${HeA} has recently adjusted ${hisA} age to reflect your youth-focused society.`];
 					if (V.minimumSlaveAge === 3) {
 						r.push(`${HeA}'s an adorable toddler wearing a cute pink dress.`);
 					} else if (V.minimumSlaveAge <= 7) {
-						r.push(`${HeA}'s a cute ${loliA} wearing tight, crotch hugging spats and a tight tube top across ${hisA} flat chest.`);
-					} else if (V.minimumSlaveAge <= 13) {
+						r.push(`${HeA}'s a cute ${loliA} wearing tight, crotch-hugging spats and a tight tube top across ${hisA} flat chest.`);
+					} else if (V.minimumSlaveAge <= 12) {
+						r.push(`${HeA}'s a charming preteen wearing tight denim shorts and a loose crop top across the tiny buds of ${hisA} chest.`);
+					} else if (V.minimumSlaveAge < 18) {
 						r.push(`${HeA}'s an attractive teenager wearing short shorts and a sheer top that shows off ${hisA} newly grown breasts.`);
 					} else {
 						r.push(`${HeA}'s an attractive young adult wearing a sheer dress that shows off ${hisA} youthful curves.`);
@@ -1700,7 +1709,7 @@ globalThis.PersonalAssistantAppearance = function() {
 				},
 				"body purist": `${HeA} is wearing nothing at all, happy to show off ${hisA} flawless body. ${HisA} curves are perfect; it's the only way to describe ${himA}.`,
 				get "intellectual dependency"() {
-					const r = [`${HeA} is wearing nothing at all; it would just get in the way.`];
+					const r = [`${HeA} is wearing nothing at all; clothes would just get in the way.`];
 					if (V.arcologies[0].FSIntellectualDependencyLawBeauty === 1) {
 						r.push(`${HisA} lavish makeup, long nails, luxurious hair,`);
 						if (V.arcologies[0].FSSlimnessEnthusiastLaw !== 1) {
@@ -1729,7 +1738,7 @@ globalThis.PersonalAssistantAppearance = function() {
 						if (V.arcologies[0].FSRepopulationFocus !== "unset") {
 							r.push(`baby bump,`);
 						}
-						r.push(`narrow waist, and huge dicksucking lips spell out bimbo far better than ${heA} ever could.`);
+						r.push(`narrow waist, and huge dicksucking lips spell out 'bimbo' far better than ${heA} ever could.`);
 					} else {
 						r.push(`${HeA}'s moist and ready to go, not that ${heA} could think of anything else to do.`);
 					}
diff --git a/src/player/desc/pLongCrotch.js b/src/player/desc/pLongCrotch.js
index 1be282ff71dbded8c9d730093c2ab1bcb9e5b57a..46dfb72f7dcb2fd5f27531dae8673380099321a2 100644
--- a/src/player/desc/pLongCrotch.js
+++ b/src/player/desc/pLongCrotch.js
@@ -34,10 +34,10 @@ App.Desc.Player.crotch = function(PC = V.PC) {
 			} else if (PC.prostate > 1 && PC.belly < 5000) {
 				r.push(`your bulging prostate`);
 			}
-			if (PC.prostate > 1) {
-				r.push(`and`);
-			}
 			if (PC.physicalAge >= pubertyAge - 2 && !["bald", "hairless", "waxed"].includes(PC.pubicHStyle)) {
+				if (PC.prostate > 1 && PC.belly < 5000) {
+					r.push(`and`);
+				}
 				if (PC.physicalAge < pubertyAge - 1) {
 					r.push(`your wispy pubic hair`);
 				} else if (PC.physicalAge < pubertyAge) {
@@ -51,7 +51,7 @@ App.Desc.Player.crotch = function(PC = V.PC) {
 				} else if (PC.pubicHStyle === "bushy" || PC.pubicHStyle === "bushy in the front and neat in the rear") {
 					r.push(`your ${PC.pubicHColor} bush`);
 				} else if (PC.pubicHStyle === "very bushy") {
-					r.push(`your snail trial and adjacent forest of ${PC.pubicHColor} pubic hair`);
+					r.push(`your snail trail and adjacent forest of ${PC.pubicHColor} pubic hair`);
 				}
 			}
 			r.push(r.pop() + `, you have`);
diff --git a/src/player/desc/pNotesBelly.js b/src/player/desc/pNotesBelly.js
index e7e16d62cbf734834812215f2c89ea984f07e072..31ad6617d607edb1c2ce14a83c61187476043c23 100644
--- a/src/player/desc/pNotesBelly.js
+++ b/src/player/desc/pNotesBelly.js
@@ -107,7 +107,7 @@ App.Desc.Player.pNotesBelly = function(PC = V.PC) {
 				if (PC.pregMood === 1) {
 					r.push(`Though you definitely appreciate their aid.`);
 				} else if (PC.pregMood === 2) {
-					r.push(`Your hormones practically rule you, leading you to demand your slaves to be prepared to pleasure you at a moments notice. Your needy cunt hungers for dick and you don't care`);
+					r.push(`Your hormones practically rule you, leading you to demand your slaves to be prepared to pleasure you at a moment's notice. Your needy cunt hungers for dick and you don't care`);
 					if (V.seeDicks !== 0) {
 						r.push(`what it is attached to`);
 					} else {
diff --git a/src/pregmod/blackMarket.js b/src/pregmod/blackMarket.js
index 3e72cf6e0b68446adf4db7996c951088b7ea70df..ccab94962cd383539c9b4895d1e2d5b7030a4806 100644
--- a/src/pregmod/blackMarket.js
+++ b/src/pregmod/blackMarket.js
@@ -324,9 +324,10 @@ App.UI.blackMarket = function() {
 	if (V.thisWeeksIllegalWares !== 0 && V.thisWeeksIllegalWares.length > 0) {
 		for (const ware of V.thisWeeksIllegalWares) { // TODO: why do we loop at all, instead of just checking if it's in array.
 			switch (ware) {
-				case "childhoodFertilityInducedNCS":
+				case "childhoodFertilityInducedNCS": {
+					const NCSCash = 135000;
 					if (V.minimumSlaveAge <= 15) {
-						r.push(App.UI.DOM.makeElement("div", `Childhood Fertility Induced NCS (Induced Neotenic Complex Syndrome or Syndrome X modified for fertility).`, "cyan"));
+						r.push(App.UI.DOM.makeElement("div", `Childhood Fertility Induced NCS (Induced Neotenic Complex Syndrome or Syndrome X modified for fertility).`, ["cyan"]));
 						if (V.minimumSlaveAge > 8) {
 							r.push(`Illegal information for the Childhood Fertility <span class="orange">Induced NCS</span> (genetic engineering and hormonal blend) research recipe.`);
 							App.Events.addNode(node, r, "div");
@@ -334,15 +335,6 @@ App.UI.blackMarket = function() {
 							r.push(`"I'm sorry, I can't sell this product to you, even if I wanted to," he says. "I have this technology, which if applied, would make slaves appear younger than the legal age of majority. I picked it up from an exotics dealer, who picked it up from some old world government research center. And yes, I know, this is a black market, and I would be happy to sell it to you, except, you see, too many of the wrong people know I have it, and while the knowledge isn't illegal, selling or using it is. See if I sell this to you, you'd start getting younger looking slaves, and those people would try to take us both down, and since I'm not the master of an arcology, I would probably end up enslaved, and I'm not interested in that. If only the laws were more open about who could have sex with who, I could sell this to anyone interested."`);
 							r.push(`Since the agreed upon minimum age in your Free City is greater than eight, it would draw way too much attention for you to make use of the research recipe for the Childhood Fertility <span class="orange">Induced NCS</span> (genetic engineering and hormonal blend).`);
 							App.Events.addNode(node, r, "div");
-							r = [];
-							r.push(
-								`He notices your interest and lets you read the information`,
-								App.UI.DOM.combineNodes(
-									App.Encyclopedia.Dialog.linkDOM("Childhood Fertility Induced NCS", "Childhood Fertility Induced NCS"),
-									`.`
-								)
-							);
-							V.merchantIllegalWares.delete("childhoodFertilityInducedNCS");
 						} else {
 							if (V.geneticMappingUpgrade === 0) {
 								r.push(`You lack the facilities required for such a treatment to be effective on specific individuals.`);
@@ -370,7 +362,6 @@ App.UI.blackMarket = function() {
 											`Remember, though, no money back on this. Technology like this doesn't exist anywhere else, your treated slaves will stay and become younger looking forever, and your older ones will slowly begin to regress towards a disturbingly young mid-childhood state. All those caveats aside, if this sounds like something you'd want, then buy now!"`
 										);
 									}
-									const NCSCash = 135000;
 									if (V.cash >= NCSCash) {
 										r.push(r.pop() + `"`);
 										App.Events.addNode(node, r, "div");
@@ -391,24 +382,28 @@ App.UI.blackMarket = function() {
 										App.Events.addNode(node, r, "div");
 										r.push(`You cannot afford the asking price of <span class="cash dec">${(cashFormat(NCSCash))}</span> for the Childhood Fertility <span class="orange">Induced NCS</span> (genetic engineering and hormonal blend) research recipe.`);
 									}
-									r.push(
-										`He notices your interest and lets you read the information`,
-										App.UI.DOM.combineNodes(
-											App.Encyclopedia.Dialog.linkDOM("Childhood Fertility Induced NCS", "Childhood Fertility Induced NCS"),
-											"."
-										)
-									);
 								} else {
 									r.push(`You already possess the Childhood Fertility <span class="orange">Induced NCS</span> (genetic engineering and hormonal blend) research recipe.`);
 									V.merchantIllegalWares.delete("childhoodFertilityInducedNCS");
 								}
 							}
 						}
+						if ((V.minimumSlaveAge <= 15 && V.minimumSlaveAge > 8) || (V.cash < NCSCash)) {
+							r.push(
+								`He notices your interest and lets you read the information`,
+								App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("Childhood Fertility Induced NCS"), ".")
+							);
+							App.Events.addNode(node, r, "div");
+							if (V.minimumSlaveAge <= 15 && V.minimumSlaveAge > 8) {
+								V.merchantIllegalWares.delete("childhoodFertilityInducedNCS");
+							}
+						}
 					} else {
 						r.push(`You have no interest in such a distasteful research.`);
 						V.merchantIllegalWares.delete("childhoodFertilityInducedNCS");
 					}
 					break;
+				}
 				case "UterineRestraintMesh":
 					if (V.UterineRestraintMesh === 0) {
 						if (V.seePreg === 1) {
@@ -435,7 +430,7 @@ App.UI.blackMarket = function() {
 									r = [];
 									r.push(`"This is an interesting one... It's designed to prevent any sort of rupturing of the uterus, but, while that idea is great and all, it does jack shit to prevent leaks from elsewhere in the organ. The guy funding the research company was pissed when his slave bloated up like a cum-filled balloon and dropped dead, destroyed most of the development lab. Fortunately, he failed to ruin the best part of it — these blueprints. Now, you're probably wondering what good is something like this, but I've done business with a number of industrial slave farms, and they swear upon its ability to force a girl to carry far more children than physically possible; well, up until their wombs crushed their organs, that is. I supposed it'd work with anything solid, really, if you enjoy sticking things up into slave girls."`);
 								} else {
-									r.push(App.UI.DOM.makeElement("span", "The autosurgery lacks the finesse needed to implant something of this complexity, so designs for a supportive uterine mesh are unusable until it is upgraded.", "note"));
+									r.push(App.UI.DOM.makeElement("span", "The autosurgery lacks the finesse needed to implant something of this complexity, so designs for a supportive uterine mesh are unusable until it is upgraded.", ["note"]));
 								}
 							} else {
 								r.push(`You lack the facilities needed to produce implants of this complexity, so designs for a supportive uterine mesh are currently unobtainable.`);