Index: trunk/src/org/expeditee/auth/Actions.java
===================================================================
--- trunk/src/org/expeditee/auth/Actions.java	(revision 1313)
+++ trunk/src/org/expeditee/auth/Actions.java	(revision 1314)
@@ -50,4 +50,5 @@
 import org.expeditee.gui.FrameIO;
 import org.expeditee.gui.MessageBay;
+import org.expeditee.gui.MessageBay.Progress;
 import org.expeditee.io.ExpReader;
 import org.expeditee.items.Item;
@@ -378,4 +379,6 @@
 		// Track progress
 		String message = "Creating new user account...";
+		int progress = 0;
+		int step = 20;
 
 		// Extract user details
@@ -384,5 +387,11 @@
 		String email = userdata.get(AuthenticationTag.Email);
 		
-		System.out.println(message + "Generating Keys.");
+		Progress progressBar = MessageBay.displayProgress(message);
+		try {
+			progressBar.UpdateMessage(message + "Generating Keys.", progress += step);
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+		DisplayController.refreshBayArea();
 
 		// Generate keys
@@ -401,5 +410,10 @@
 		String privateKey = Base64.getEncoder().encodeToString(keyPair.getPrivate().getEncoded());
 		
-		System.out.println(message + "Creating Profile Frameset.");
+		try {
+			progressBar.UpdateMessage(message + "Creating Profile Frameset.", progress += step);
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+		DisplayController.refreshBayArea();
 		
 		// Update in memory settings
@@ -470,5 +484,10 @@
 		}
 		
-		System.out.println(message + "Establishing user credentials.");
+		try {
+			progressBar.UpdateMessage(message + "Establishing user credentials.", progress += step);
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+		DisplayController.refreshBayArea();
 				
 		// Create credentials
@@ -489,5 +508,6 @@
 		FrameIO.migrateFrame(credentialsFrame, destinationFile);
 		
-		System.out.println(message + "Creating Individual Space.");
+		MessageBay.displayMessage(message + "Creating Individual Space.");
+		DisplayController.refreshBayArea();
 		
 		// Copy private resources to personal area
@@ -496,6 +516,11 @@
 		File contactsDir = new File(personalResources.resolve("contacts").toAbsolutePath().toString());
 		contactsDir.mkdir();
-		
-		System.out.println(message + "Creating Space For Dead Drops");
+
+		try {
+			progressBar.UpdateMessage(message + "Creating Space For Dead Drops.", progress += step);
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+		DisplayController.refreshBayArea();
 		
 		File deadDropsDir = new File(personalResources.resolve("deaddrops").toAbsolutePath().toString());
@@ -505,5 +530,11 @@
 		AudioPathManager.activateAndScanAudioDir(); // ****
 		
-		System.out.println(message + "Done.");
+		try {
+			progressBar.UpdateMessage(message + "Done.", progress += step);
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+		DisplayController.refreshBayArea();
+		
 	}
 
Index: trunk/src/org/expeditee/auth/account/Authenticate.java
===================================================================
--- trunk/src/org/expeditee/auth/account/Authenticate.java	(revision 1313)
+++ trunk/src/org/expeditee/auth/account/Authenticate.java	(revision 1314)
@@ -81,4 +81,5 @@
 			// Update were we get our frames.
 			UserSettings.setupDefaultFolders();
+			MessageBay.clear();
 			MessageBay.updateFramesetLocation();
 			MailBay.disconnect();
Index: trunk/src/org/expeditee/gui/DisplayController.java
===================================================================
--- trunk/src/org/expeditee/gui/DisplayController.java	(revision 1313)
+++ trunk/src/org/expeditee/gui/DisplayController.java	(revision 1314)
@@ -1375,10 +1375,11 @@
 	}
 	
-	/*
-	 * 
-	 * Thread-safe rendering.
-	 * 
-	 */
-
+	public static void refreshBayArea() {
+		// Always get the clip as it clears at the same time
+		Clip clip = _damagedAreas.getClip();
+		GraphicsManager g = EcosystemManager.getGraphicsManager();
+		pushBayAreaUpdate(true, clip, g);
+	}
+	
 	/**
 	 * Redraws the entire window. Shouldn't be called directly, instead use
@@ -1441,4 +1442,21 @@
 		}
 
+		pushBayAreaUpdate(useInvalidation, clip, g);
+		
+		// Draw any separator lines
+		g.drawLine(getMessageBaySeparatorLine(), SEPARATOR_COLOUR, SEPARATOR_STROKE);
+		g.drawLine(getTwinFramesSeparatorLine(), SEPARATOR_COLOUR, SEPARATOR_STROKE);
+		
+		// Paint any popups
+		if (PopupManager.getInstance() != null) {
+			PopupManager.getInstance().paint();
+		}
+		
+		g.popDrawingSurface();
+		g.drawImage(_refreshBuffer, Point.ORIGIN);
+		return true;
+	}
+
+	private static void pushBayAreaUpdate(boolean useInvalidation, Clip clip, GraphicsManager g) {
 		if (!isAudienceMode()) {
 			if (!isMailMode()) {
@@ -1450,19 +1468,6 @@
 			}
 		}
-		
-		// Draw any separator lines
-		g.drawLine(getMessageBaySeparatorLine(), SEPARATOR_COLOUR, SEPARATOR_STROKE);
-		g.drawLine(getTwinFramesSeparatorLine(), SEPARATOR_COLOUR, SEPARATOR_STROKE);
-		
-		// Paint any popups
-		if (PopupManager.getInstance() != null) {
-			PopupManager.getInstance().paint();
-		}
-		
-		g.popDrawingSurface();
-		g.drawImage(_refreshBuffer, Point.ORIGIN);
-		return true;
-	}
-
+	}
+	
 	private static void paintMessageBay(boolean useInvalidation, Clip clip, GraphicsManager g) {
 		Clip messageBayClip = null;
Index: trunk/src/org/expeditee/gui/MessageBay.java
===================================================================
--- trunk/src/org/expeditee/gui/MessageBay.java	(revision 1313)
+++ trunk/src/org/expeditee/gui/MessageBay.java	(revision 1314)
@@ -165,4 +165,9 @@
 		return _messageBuffer;
 	}
+	
+	public static void clear() {
+		MessageBay._messageCount = 0;
+		MessageBay._messages.clear();
+	}
 
 	/** Updates the image buffer to reflect the current state of the message bay. */
