diff --git a/js/003-data/gameVariableData.js b/js/003-data/gameVariableData.js
index 4e730d2ec80662dcaff270aee5dc0350da8dce98..42c463656f12893e28cc8510246c68a30e82541f 100644
--- a/js/003-data/gameVariableData.js
+++ b/js/003-data/gameVariableData.js
@@ -3,6 +3,7 @@ App.Data.defaultGameStateVariables = {
 	returnTo: "init",
 	nextButton: "Continue",
 	nextLink: "Alpha disclaimer",
+	storedLink: "",
 	ver: 0,
 	pmodVer: 0,
 	releaseID: 0,
diff --git a/src/data/backwardsCompatibility/backwardsCompatibility.js b/src/data/backwardsCompatibility/backwardsCompatibility.js
index 5b39dbbaf1e88caf9623c524a7d52f9cd51638bb..f9af61dd6a8d3b5b3c0467ce93ca5ed876c428e4 100644
--- a/src/data/backwardsCompatibility/backwardsCompatibility.js
+++ b/src/data/backwardsCompatibility/backwardsCompatibility.js
@@ -24,9 +24,13 @@ App.Update.autoshred = function() {
 };
 
 App.Update.setNonexistantProperties = function(obj, props) {
+	console.log(obj, props);
 	let count = 0;
 	for (const p of Object.getOwnPropertyNames(props)) {
 		if (typeof obj[p] === "undefined") {
+			if (obj[p] !== props[p]) {
+				console.log("setting V." + p + " to ", props[p]);
+			}
 			obj[p] = clone(props[p]);
 			count++;
 		}
diff --git a/src/js/main.js b/src/js/main.js
index daa41e8c67af728bc6d41b3c48a7dc80d26ddb80..89902d6ba07f7b0fa090ab430fcceaa41214e2af 100644
--- a/src/js/main.js
+++ b/src/js/main.js
@@ -127,27 +127,27 @@ App.MainView.useFucktoy = function(slave) {
 		const optionDiv = document.createElement("div");
 		optionDiv.classList.add("indent");
 
-		optionDiv.append(App.UI.DOM.passageLink(`Use ${his} mouth`, "FLips", setEnvironment(slave)),
-			" | ", App.UI.DOM.passageLink("Play with " + his + " tits", "FBoobs", setEnvironment(slave)));
+		optionDiv.append(App.UI.DOM.passageLink(`Use ${his} mouth`, "FLips", setEnvironment),
+			" | ", App.UI.DOM.passageLink("Play with " + his + " tits", "FBoobs", setEnvironment));
 
 		if (canDoVaginal(slave)) {
-			optionDiv.append(" | ", App.UI.DOM.passageLink(`Fuck ${him}`, "FVagina", setEnvironment(slave)));
+			optionDiv.append(" | ", App.UI.DOM.passageLink(`Fuck ${him}`, "FVagina", setEnvironment));
 			if (canDoAnal(slave)) {
-				optionDiv.append(" | ", App.UI.DOM.passageLink(`Use ${his} holes`, "FButt", setEnvironment(slave)));
+				optionDiv.append(" | ", App.UI.DOM.passageLink(`Use ${his} holes`, "FButt", setEnvironment));
 			}
 		}
 		if (canDoAnal(slave)) {
-			optionDiv.append(" | ", App.UI.DOM.passageLink(`Fuck ${his} ass`, "FAnus", setEnvironment(slave)));
+			optionDiv.append(" | ", App.UI.DOM.passageLink(`Fuck ${his} ass`, "FAnus", setEnvironment));
 		}
 		if (canDoVaginal(slave) || canDoAnal(slave)) {
 			if (slave.belly >= 300000) {
-				optionDiv.append(" | ", App.UI.DOM.passageLink(`Fuck ${him} over ${his} belly`, "FBellyFuck", setEnvironment(slave)));
+				optionDiv.append(" | ", App.UI.DOM.passageLink(`Fuck ${him} over ${his} belly`, "FBellyFuck", setEnvironment));
 			}
 		}
 		if (canPenetrate(slave)) {
-			optionDiv.append(" | ", App.UI.DOM.passageLink(`Ride ${him}`, "FDick", setEnvironment(slave)));
+			optionDiv.append(" | ", App.UI.DOM.passageLink(`Ride ${him}`, "FDick", setEnvironment));
 		}
-		optionDiv.append(" | ", App.UI.DOM.passageLink(`Abuse ${him}`, "FAbuse", setEnvironment(slave)));
+		optionDiv.append(" | ", App.UI.DOM.passageLink(`Abuse ${him}`, "FAbuse", setEnvironment));
 
 		div.append(optionDiv);
 	} else {
diff --git a/src/js/utilsFC.js b/src/js/utilsFC.js
index 4c24b30c45cb81a6f48a4b67dd749ef35faa641c..8e368ddc3bf3d08551656bf06d62bba81e4704d3 100644
--- a/src/js/utilsFC.js
+++ b/src/js/utilsFC.js
@@ -2861,3 +2861,23 @@ window.generateSlaveID = function() {
 	}
 	return V.IDNumber++;
 };
+
+window.ASDump = function() {
+	if ((typeof V.activeSlave === undefined) || (V.activeSlave === 0)) {
+		return `<span class="red">ERROR:</span> AS Dump, activeSlave invalid, returnTo is 'V.returnTo', previous passage was '${previous()}'. Please report this. `;
+	} else {
+		let SL = V.slaves.length;
+		let ID = V.activeSlave.ID;
+		if (V.i >= 0 && V.i < SL && V.slaves[V.i].ID === ID) { /* shortcut if V.i is already pointing to this slave */
+			V.slaves[V.i] = V.activeSlave;
+		} else {
+			V.i = V.slaveIndices[ID]; // find V.i if exists
+			if (typeof V.i === undefined) { /* not found, so new slave */
+				newSlave(V.activeSlave);
+			} else {
+				V.slaves[V.i] = V.activeSlave;
+			}
+		}
+		clearSummaryCache(V.activeSlave);
+	}
+};
diff --git a/src/uncategorized/personalAttentionSelect.tw b/src/uncategorized/personalAttentionSelect.tw
index 4d41d4afee44c912667d8c8b4aab34b172a12074..05f1689433798fa60c2fb79f9e5bb0046b4300ac 100644
--- a/src/uncategorized/personalAttentionSelect.tw
+++ b/src/uncategorized/personalAttentionSelect.tw
@@ -13,9 +13,9 @@
 <<if $PC.skill.warfare > 25>>
 	<br>[[Survey your arcology's defenses in person|Main][$personalAttention = "defensive survey"]]
 <</if>>
-<<if $PC.skill.engineering > 25>>
+<<if $PC.skill.engineering > 25>> <br>
 	<<if ($arcologies[0].prosperity + 1 * (1 + Math.ceil($PC.skill.engineering/100))) < $AProsperityCap>>
-		<br>[[Contribute to a local development project|Main][$personalAttention = "development project"]]
+		[[Contribute to a local development project|Main][$personalAttention = "development project"]]
 	<<else>>
 		contributing to a local development project @@.yellow;would be futile.@@
 	<</if>>
@@ -362,4 +362,4 @@
 <<= App.UI.SlaveList.slaveSelectionList(
 		s => assignmentVisible(s) && s.fuckdoll === 0,
 		s => App.UI.DOM.link(SlaveFullName(s), (id) => {App.UI.selectSlaveForPersonalAttention(id); }, s.ID)
-	)>>
\ No newline at end of file
+	)>>