Index: trunk/src/org/apollo/ApolloSystem.java
===================================================================
--- trunk/src/org/apollo/ApolloSystem.java	(revision 1269)
+++ trunk/src/org/apollo/ApolloSystem.java	(revision 1270)
@@ -156,5 +156,5 @@
 		if (profile == null) {
 			try {
-				profile = FrameIO.CreateNewProfile(UserSettings.DEFAULT_PROFILE_NAME, null);
+				profile = FrameIO.CreateNewProfile(UserSettings.DEFAULT_PROFILE_NAME, null, null);
 			} catch (Exception e) {
 				e.printStackTrace();
Index: trunk/src/org/expeditee/actions/Misc.java
===================================================================
--- trunk/src/org/expeditee/actions/Misc.java	(revision 1269)
+++ trunk/src/org/expeditee/actions/Misc.java	(revision 1270)
@@ -1334,5 +1334,5 @@
 		homeFrame.removeAllItems(homeFrame.getItems());
 		homeFrame.addText(0, 0, "title", null);
-		FrameUtils.CreateDefaultProfile(UserSettings.UserName.get(), homeFrame, null);
+		FrameUtils.CreateDefaultProfile(UserSettings.UserName.get(), homeFrame, null, null);
 	}
 	
Index: trunk/src/org/expeditee/auth/Actions.java
===================================================================
--- trunk/src/org/expeditee/auth/Actions.java	(revision 1269)
+++ trunk/src/org/expeditee/auth/Actions.java	(revision 1270)
@@ -32,4 +32,5 @@
 import java.util.Optional;
 import java.util.Random;
+import java.util.function.Consumer;
 import java.util.stream.Collectors;
 
@@ -67,5 +68,6 @@
 
 public class Actions implements CryptographyConstants {
-		
+	
+	//Debug Functions
 	public static void SendTestMessage(String colleagueName) throws InvalidKeySpecException, NoSuchAlgorithmException, FileNotFoundException, KeyStoreException, CertificateException, ClassNotFoundException, IOException, SQLException {
 		String time = org.expeditee.stats.Formatter.getDateTime();
@@ -79,4 +81,10 @@
 		Path outbox = Paths.get(FrameIO.PROFILE_PATH).resolve(sender).resolve(sender + "-credentials");
 		Mail.sendMail(mail, publicKey, outbox);
+	}
+	private static String userbackup = "authadmin";
+	public static void ToggleAuth() {
+		String backup = UserSettings.UserName.get();
+		UserSettings.UserName.set(userbackup);
+		userbackup = backup;
 	}
 	
@@ -394,6 +402,19 @@
 		initialSettings.put("org.expeditee.gui.folders.FolderSettings.AudioDirs", FolderSettings.AudioDirs);
 		
+		// Record the credentials frame number
+		Map<String, Consumer<Frame>> notifiers = new HashMap<String, Consumer<Frame>>();
+		notifiers.put(Constants.SETTINGS_AUTH, frame -> {
+			Authenticator.CREDENTIALS_FRAME = frame.getNumber();
+			Collection<Text> textItems = frame.getTextItems();
+			for (Text t: textItems) {
+				if (t.getText().equals("Secrets")) {
+					t.setPermission(new PermissionPair(UserAppliedPermission.followLinks, UserAppliedPermission.denied));
+					break;
+				}
+			}
+		});
+		
 		// Create users profile
-		Frame profile = FrameIO.CreateNewProfile(username, initialSettings);
+		Frame profile = FrameIO.CreateNewProfile(username, initialSettings, notifiers);
 		int lastNumber = FrameIO.getLastNumber(profile.getFramesetName());
 		for (int i = 1; i <= lastNumber; i++) {
@@ -407,10 +428,11 @@
 			f.getAllItems().stream().forEach(item -> item.setOwner(username));
 			f.setChanged(true);
-			f.setEncryptionLabel("Profile");
+			if (f.getNumber() != Authenticator.CREDENTIALS_FRAME) {
+				f.setEncryptionLabel("Profile");
+			}
 			Collection<Item> secretsLink = getByContent(f, "Secrets");
 			Collection<Item> publicKeyItem = getByContent(f, "PublicKey");
 			if (!secretsLink.isEmpty() && !publicKeyItem.isEmpty()) {
 				//Then we are on credentials frame
-				secretsLink.forEach(text -> text.setPermission(new PermissionPair(UserAppliedPermission.full, UserAppliedPermission.none)));
 				f.addToData("MultiuserCredentials");
 			}
@@ -421,4 +443,9 @@
 			FrameIO.SaveFrame(f);
 			KeyList.PersonalKey.setSetting(backupPersonalKey);
+		}
+		
+		if (Authenticator.CREDENTIALS_FRAME == -1) {
+			System.err.println("authActions::Unable to establish credentials frame for new profile frame.  Account creation failed.");
+			return;
 		}
 		
@@ -436,4 +463,7 @@
 		out.flush();
 		out.close();
+		//	migrate credentials frame
+		Frame credentialsFrame = FrameIO.LoadFrame(username + Authenticator.CREDENTIALS_FRAME);
+		FrameIO.migrateFrame(credentialsFrame, Paths.get(credentialsDir.getAbsolutePath()).resolve(Authenticator.CREDENTIALS_FRAME + ".exp"));
 		//	outbox
 		Connection c = DriverManager.getConnection("jdbc:sqlite:" + credentialsDir.getAbsolutePath() + File.separator + "expmail.db");
Index: trunk/src/org/expeditee/auth/Authenticator.java
===================================================================
--- trunk/src/org/expeditee/auth/Authenticator.java	(revision 1269)
+++ trunk/src/org/expeditee/auth/Authenticator.java	(revision 1270)
@@ -64,5 +64,5 @@
 	
 	// The frame number of the frame containing the current authenticated users public key.
-	public static int CREDENTIALS_FRAME = 13;
+	public static int CREDENTIALS_FRAME = -1;
 	public static final String ADMINACCOUNT = "authadmin";
 	
Index: trunk/src/org/expeditee/auth/tags/Constants.java
===================================================================
--- trunk/src/org/expeditee/auth/tags/Constants.java	(revision 1269)
+++ trunk/src/org/expeditee/auth/tags/Constants.java	(revision 1270)
@@ -19,4 +19,5 @@
 	public static final String SETTINGS_USER_SETTINGS_PROFILE_NAME = "settings.UserSettings.ProfileName";
 	public static final String SETTINGS_USER_SETTINGS_USER_NAME = "settings.UserSettings.UserName";
+	public static final String SETTINGS_AUTH = "settings.identity";
 	public static final String SETTINGS_AUTH_EMAIL = "settings.identity.Email";
 	public static final String SETTINGS_AUTH_PUBLIC_KEY = "settings.identity.PublicKey";
Index: trunk/src/org/expeditee/gui/Browser.java
===================================================================
--- trunk/src/org/expeditee/gui/Browser.java	(revision 1269)
+++ trunk/src/org/expeditee/gui/Browser.java	(revision 1270)
@@ -553,5 +553,5 @@
 		if (profile == null) {
 			try {
-				profile = FrameIO.CreateNewProfile(userName, null);
+				profile = FrameIO.CreateNewProfile(userName, null, null);
 			} catch (Exception e) {
 				// TODO tell the user that there was a problem creating the
Index: trunk/src/org/expeditee/gui/FrameIO.java
===================================================================
--- trunk/src/org/expeditee/gui/FrameIO.java	(revision 1269)
+++ trunk/src/org/expeditee/gui/FrameIO.java	(revision 1270)
@@ -43,4 +43,5 @@
 import java.util.List;
 import java.util.Map;
+import java.util.function.Consumer;
 import java.util.stream.Collectors;
 
@@ -1349,7 +1350,7 @@
 	}
 
-	public static Frame CreateNewProfile(String username, Map<String, Setting> initialSettings) throws InvalidFramesetNameException, ExistingFramesetException  {
+	public static Frame CreateNewProfile(String username, Map<String, Setting> initialSettings, Map<String, Consumer<Frame>> toNotifyOnSet) throws InvalidFramesetNameException, ExistingFramesetException  {
 		Frame profile = CreateFrameset(username, PROFILE_PATH, true);
-		FrameUtils.CreateDefaultProfile(username, profile, initialSettings);
+		FrameUtils.CreateDefaultProfile(username, profile, initialSettings, toNotifyOnSet);
 		return profile;
 	}
@@ -1924,6 +1925,5 @@
 	}
 	
-	public static Path setupPersonalResources(String username)
-	{
+	public static Path setupPersonalResources(String username) {
 		Path personalResources = Paths.get(FrameIO.PARENT_FOLDER).resolve("resources-" + username);
 		personalResources.toFile().mkdir();		
@@ -1944,4 +1944,23 @@
 		
 		return personalResources;
+	}
+	
+	public static void migrateFrame(Frame toMigrate, Path destinationDirectory) {
+		Path source = Paths.get(toMigrate.getFramePathReal());
+		String destination = source.relativize(destinationDirectory).toString().substring(3).replace(File.separator, "/");
+		try {
+			copyFileTree(source, destinationDirectory);
+		} catch (IOException e) {
+			System.err.println("FrameIO::migrateFrame: failed to migrate from to new location.  Message: " + e.getMessage());
+			return;
+		}
+		try {
+			FileWriter out = new FileWriter(source.toFile());
+			out.write("REDIRECT:" + destination);
+			out.flush();
+			out.close();
+		} catch (IOException e) {
+			System.err.println("FrameIO::migrateFrame: failed to update file [" + source + "] to redirect to  [" + destination + "] following migration.  Message: " + e.getMessage());
+		}
 	}
 	
Index: trunk/src/org/expeditee/gui/FrameUtils.java
===================================================================
--- trunk/src/org/expeditee/gui/FrameUtils.java	(revision 1269)
+++ trunk/src/org/expeditee/gui/FrameUtils.java	(revision 1270)
@@ -41,4 +41,5 @@
 import java.util.List;
 import java.util.Map;
+import java.util.function.Consumer;
 import java.util.jar.JarEntry;
 import java.util.jar.JarFile;
@@ -1514,5 +1515,5 @@
 	
 	public static void CreateDefaultProfile(String profileFor, Frame profile) {
-		CreateDefaultProfile(profileFor, profile, null);
+		CreateDefaultProfile(profileFor, profile, null, null);
 	}
 
@@ -1525,5 +1526,5 @@
 	 */
 	public static void CreateDefaultProfile(String profileFor, Frame profile, 
-			Map<String, Setting> specifiedSettings) {
+			Map<String, Setting> specifiedSettings, Map<String, Consumer<Frame>> notifyWhenGenerated) {
 		// If this is already the default profile then nothing (other than setting
 		// title) needs to be done.
@@ -1539,5 +1540,5 @@
 				try {
 					// If we do not have a default to copy, create one.
-					defaultFrame = FrameIO.CreateNewProfile(UserSettings.DEFAULT_PROFILE_NAME, null);
+					defaultFrame = FrameIO.CreateNewProfile(UserSettings.DEFAULT_PROFILE_NAME, null, null);
 				} catch (InvalidFramesetNameException invalidNameEx) {
 					MessageBay.errorMessage("Failed to create default profile named: "
@@ -1608,4 +1609,7 @@
 					}
 				}
+				if (notifyWhenGenerated != null && notifyWhenGenerated.containsKey(category)) {
+					notifyWhenGenerated.get(category).accept(profile);
+				}
 				FrameIO.SaveFrame(profile);
 			}
@@ -1714,4 +1718,5 @@
 			t.setColor(Colour.GREY);
 			Settings.generateSettingsTree(t);
+			System.out.println("@Settings: Default settings generation complete.");
 
 			FrameIO.SaveFrame(profile);
