diff --git a/src/005-passages/managePassages.js b/src/005-passages/managePassages.js
index 17d80261a60166cf27268cfd8a73484e8e16b73a..4a7ee526deccf0b272f04f29dee3ce8380bf9dcb 100644
--- a/src/005-passages/managePassages.js
+++ b/src/005-passages/managePassages.js
@@ -8,7 +8,7 @@ new App.DomPassage("Main",
 	}, ["jump-to-safe", "jump-from-safe"]
 );
 
-new App.DomPassage("Future Society", () => {return App.UI.fsPassage();}, ["jump-to-safe", "jump-from-safe"]);
+new App.DomPassage("Future Society", () => App.UI.fsPassage(), ["jump-to-safe", "jump-from-safe"]);
 
 new App.DomPassage("Slave FS Conformance", () => App.FSConformance.slaveConformancePassage(), ["jump-to-safe", "jump-from-safe"]);
 
@@ -30,6 +30,22 @@ new App.DomPassage("Manage Personal Affairs",
 	}, ["jump-to-safe", "jump-from-safe"]
 );
 
+new App.DomPassage("pDildoVagina",
+	() => {
+		V.nextButton = "Back";
+		V.nextLink = "Manage Personal Affairs";
+		return App.UI.pDildoVagina();
+	}, ["jump-from-safe"]
+);
+
+new App.DomPassage("pDildoAss",
+	() => {
+		V.nextButton = "Back";
+		V.nextLink = "Manage Personal Affairs";
+		return App.UI.pDildoAss();
+	}, ["jump-from-safe"]
+);
+
 new App.DomPassage("retire",
 	() => {
 		V.nextButton = "Back";
diff --git a/src/player/managePersonalAffairs.js b/src/player/managePersonalAffairs.js
index a5e9cf3c30776c248ab9aac429758b08d2fa83c2..2bd95853b6bde9ab2dcbe86d3d4620a6a1cb8235 100644
--- a/src/player/managePersonalAffairs.js
+++ b/src/player/managePersonalAffairs.js
@@ -1856,9 +1856,12 @@ App.UI.managePersonalAffairs = function() {
 		const bloatingDiv = document.createElement("div");
 		const cumTapDiv = document.createElement("div");
 		const impregnateSelfDiv = document.createElement("div");
+		const dildoSelfDiv = document.createElement("div");
 
 		App.UI.DOM.appendNewElement("h2", pervertDiv, `Perversions`);
 
+		pervertDiv.append(dildoSelf());
+
 		// set these to use standard preg/inflation bars
 		if (PC.preg === 0 && PC.pregWeek === 0 && PC.vagina > -1) {
 			pervertDiv.append(
@@ -1867,6 +1870,27 @@ App.UI.managePersonalAffairs = function() {
 			);
 		}
 
+		function dildoSelf() {
+			const text = [];
+
+			if (V.PC.vagina === 0) {
+				App.Events.addNode(dildoSelfDiv, [
+					`Your virgin vagina is guarded by an intact hymen.`,
+					App.UI.DOM.passageLink(`Use a dildo to take your own cherry`, 'pDildoVagina')
+				], 'div');
+			}
+			if (V.PC.anus === 0) {
+				App.Events.addNode(dildoSelfDiv, [
+					`Your virgin ass is tight and untouched.`,
+					App.UI.DOM.passageLink(`Use a dildo to stretch your anus`, 'pDildoAss')
+				], 'div');
+			}
+
+			App.Events.addNode(dildoSelfDiv, text);
+
+			return dildoSelfDiv;
+		}
+
 		function bloating() {
 			const text = [];
 
diff --git a/src/player/pDildoAss.js b/src/player/pDildoAss.js
new file mode 100644
index 0000000000000000000000000000000000000000..dbefd754c2c63dce902e430d796759eedf7bc65b
--- /dev/null
+++ b/src/player/pDildoAss.js
@@ -0,0 +1,31 @@
+App.UI.pDildoAss = function() {
+	const r = new SpacedTextAccumulator();
+
+	r.push(`After a long day managing your slaves, you've decided that you deserve something that many of your slaves regularly have: it's time to have something fun in your tight, virginal asshole.`);
+	r.toParagraph();
+
+	r.push(`You lick your lips as you eye the thick glass dildo resting on the edge of the sink in your bathroom. It's sleek and cold, and reminds you of the many times you've pushed a similar one into the throats${V.seeDicks < 100 ? ', cunts' : ''} and asses of your slaves. Slowly, you reach out and take hold of the phallic object, feeling its weight in your hand.  You trace the smooth curve with your fingers, wondering what it would feel like inside your ass. A forbidden thrill runs through you at the thought of letting someone else violate you in such a way, but today it will be you, and only you, who penetrates your most private place.`);
+	r.toParagraph();
+
+	r.push(`As you stare into the mirror, you close your eyes and take a deep breath. The dildo feels heavy between your fingers, but not unwieldy. You grip it tightly and begin to push it towards your anus. At first, it barely enters, the tip brushing against the sensitive skin around your hole. You wince as you feel it, but the sensation is exhilarating.`);
+	r.toParagraph();
+
+	r.push(`Panting, you press forward, pushing the glass phallus deeper into your ass. It hurts, more than you expected, but also excites you. With each thrust, you open yourself wider, giving the dildo access to places no one has ever been before. Your sphincter muscles contract reflexively, trying to push the intruder out; but you are determined, and you press forward, inch by slow inch.`);
+	r.toParagraph();
+
+	r.push(`Tears well up in your eyes, and you want to scream, but you force yourself to remain calm. Breathing deeply, you count to ten, and then you try again. This time, the discomfort is less severe, and as you push further, you can feel your sphincter relaxing around the invader. You continue to push, slowly but surely, until the entire length of the dildo is inside you.`);
+	if (V.PC.prostate > 0) {
+		r.push(`It feels strange at first, unnatural...but then something remarkable happens. The pressure on your prostate sends waves of pleasure through your body, making your knees weak with delight.`);
+	}
+	r.toParagraph();
+
+	r.push(`You have done it; <span class="virginity loss">your ass is now broken in.</span> Determined to get off, you continue to rock back and forth, thrusting the dildo in and out of your asshole. With each thrust, the sensations become more intense, more exquisite. The pain is replaced by a deep, throbbing fullness, and the pleasure that courses through your body is unlike anything you've ever experienced before. You find yourself both unable and unwilling to hold back the release building within you.`);
+	r.toParagraph();
+
+	r.push(`As the familiar waves of orgasm wash over you, you ${V.PC.title === 0 ? 'cry out' : 'grunt loudly'}, your voice echoing off the hard walls of the bathroom. When the intensity subsides, you release your grip on the sink and lean forward, resting your forehead on the cool surface. You stay like that for a short time time, catching your breath and savoring the afterglow. When you finally pull out the dildo and step away from the sink, a newfound sense of power and control courses through your veins. By taking your own anal virginity, you claimed a part of yourself that no one else will ever possess.`);
+	r.toParagraph();
+
+	V.PC.anus = 1;
+
+	return r.container();
+};
diff --git a/src/player/pDildoVagina.js b/src/player/pDildoVagina.js
new file mode 100644
index 0000000000000000000000000000000000000000..66294ab576576fed0c052ebe18dc0368ee902f98
--- /dev/null
+++ b/src/player/pDildoVagina.js
@@ -0,0 +1,52 @@
+App.UI.pDildoVagina = function() {
+	const r = new SpacedTextAccumulator();
+
+	r.push(`It's still early in the day, but you've had ${V.assistant.name} clear your morning schedule for this special event. You've decided that you deserve something that many of your slaves regularly have: it's time to have something fun in your tight, virginal pussy.`);
+	r.toParagraph();
+
+	const {
+		He = '', his = '', he = '', him = ''
+	} = S.Concubine ? getPronouns(S.Concubine) : {};
+
+	if (S.Concubine) {
+		r.push(`You order `, contextualIntro(V.PC, S.Concubine, true), `to bring you a new dildo that you had made for this experience; it's fashioned after one you know from experience brings great pleasure to your tightest fucktoys. ${He} already knows something's up; after all, you don't clear your schedule for nothing, but now you can tell from ${his} ${canSee(S.Concubine) ? 'eyes' : 'face'} that ${he}'s especially curious what you're going to do with this special dildo.`);
+		r.push(`A few minutes later, ${he} returns with an soft phallic object in hand.`);
+	} else {
+		r.push(`You open a box that you've had sitting on your nightstand for some time. It contains a new dildo, fashioned after one you know from experience brings great pleasure to your tightest fucktoys.`);
+	}
+	r.push(`It's not the biggest dildo you own, by any stretch of the imagination, but it suddenly strikes you as being quite girthy when you imagine it entering your tight hole. It's expertly crafted from the finest materials, and as you ${S.Concubine ? `take it from ${him} and` : ``} examine it closely, you feel a thrill of anticipation run through you.`);
+	r.toParagraph();
+
+	r.push(`This is it: your first time.`);
+	r.toParagraph();
+
+	r.push(`${S.Concubine ? `${S.Concubine.slaveName} watches as you` : `You`} approach the full-length mirror mounted on one wall of the Master Suite.`);
+	r.push(`Stripping off your bedclothes, you stand nude before your reflection for a moment, admiring the ${(V.PC.boobs > 300) || (V.PC.butt > 1) ? 'flawless curves' : (V.PC.title === 0 ? 'girlish slenderness' : 'masculine form')} of your body. Then you sit down and spread your legs, giving yourself a clear view of your virgin pussy. Your heart is racing, but your mind is clear and focused on the task at hand.`);
+	r.toParagraph();
+
+	r.push(`Slowly, you position the dildo at your entrance, feeling its smooth surface teasing your sensitive folds. With deliberate movements, you guide it inside yourself, feeling the heat and tightness as it pierces your hymen. The sensation is intense, but you push through it, determined to claim this milestone for yourself. As the head of the dildo disappears into your depths, you let out a soft gasp of satisfaction. You've done it: you've <span class="virginity loss">broken in your virgin pussy.</span>`);
+	r.toParagraph();
+
+	r.push(`Feeling more confident now, you begin to move the dildo in and out of yourself, exploring your newfound depths. At first, it's slow and cautious, but soon you find a rhythm that feels good, and you allow yourself to become lost in the sensations coursing through your body.`);
+	r.toParagraph();
+
+	r.push(`Looking up at your reflection once again, you see the unmistakable signs of arousal on your face: flushed cheeks, parted lips, and eyes brimming with excitement. You continue pumping the dildo in and out, faster and harder now, driven by the need for release.`);
+	r.toParagraph();
+
+	r.push(`And then, it hits you: an explosive wave of pleasure that radiates from your core and spreads throughout your entire being. Your entire body shudders with delight as you feel the familiar sensation of orgasm wash over you. It's everything you could have hoped for and more, and you can't help but feel a little proud of yourself.`);
+	r.toParagraph();
+
+	if (S.Concubine) {
+		r.push(`As you catch your breath, ${S.Concubine.slaveName} approaches you reverently, ${his} ${canSee(S.Concubine) ? 'eyes' : 'face'} filled with admiration. ${He} expresses ${his} sincere happiness for you, and you can't help but notice that there seems to be a bit of desire there too.`);
+		r.toParagraph();
+		r.push(`With a smile of satisfaction, you dismiss ${him}, knowing that today marks a turning point in your life.`);
+	} else {
+		r.push(`As you catch your breath, you realize that your journey has just begun.`);
+	}
+	r.push(`From now on, you will experience all the pleasures life has to offer. As you lay back on your opulent bed, you look forward to many adventures ahead.`);
+	r.toParagraph();
+
+	V.PC.vagina = 1;
+
+	return r.container();
+};