diff --git a/browserid/static/dialog/controllers/authenticate_controller.js b/browserid/static/dialog/controllers/authenticate_controller.js
index 1472bf4a3e0a56991ed888ba1f71cf1d854acf97..2ebe697ef56e72c50abcf5fab6aaed1cf8c968b1 100644
--- a/browserid/static/dialog/controllers/authenticate_controller.js
+++ b/browserid/static/dialog/controllers/authenticate_controller.js
@@ -190,20 +190,29 @@
 
 
   PageController.extend("Authenticate", {}, {
-    init: function() {
+    init: function(el, options) {
+      options = options || {};
+
       this._super({
         bodyTemplate: "authenticate.ejs",
         bodyVars: {
           sitename: identities.getOrigin(),
-          siteicon: '/i/times.gif'
+          siteicon: "/i/times.gif",
+          email: options.email || ""
         }
       });
+
       this.submit = checkEmail;
+      // If we already have an email address, check if it is valid, if so, show 
+      // password.
+      if(options.email) {
+        this.submit();
+      }
     },
 
     "#email keyup": enterEmailState,
     "#forgotPassword click": forgotPasswordState,
-    '#cancel_forgot_password click': cancelForgotPassword
+    "#cancel_forgot_password click": cancelForgotPassword
   });
 
 }());
diff --git a/browserid/static/dialog/controllers/checkregistration_controller.js b/browserid/static/dialog/controllers/checkregistration_controller.js
index 1a6300fe13b951635a91bc60a772e4a0addb4921..e7ec8093816d9e7846c6f4107a52c88b2c8fe0fa 100644
--- a/browserid/static/dialog/controllers/checkregistration_controller.js
+++ b/browserid/static/dialog/controllers/checkregistration_controller.js
@@ -63,7 +63,7 @@
           });
         }
         else if (status === "mustAuth") {
-          me.close("auth");
+          me.close("auth", { email: me.email });
         }
       }, me.getErrorDialog(BrowserID.Errors.registration));
     }
diff --git a/browserid/static/dialog/controllers/dialog_controller.js b/browserid/static/dialog/controllers/dialog_controller.js
index 003e9adf3d33b67aa625ef9f4622666605344580..748ce889717be2fc72006fd0846f9ee4b26dfcc9 100644
--- a/browserid/static/dialog/controllers/dialog_controller.js
+++ b/browserid/static/dialog/controllers/dialog_controller.js
@@ -109,8 +109,12 @@ PageController.extend("Dialog", {}, {
         self.doNotMe();
       });
 
-      hub.subscribe("auth", function() {
-        self.doAuthenticate();
+      hub.subscribe("auth", function(msg, info) {
+        info = info || {};
+
+        self.doAuthenticate({
+          email: info.email
+        });
       });
 
       hub.subscribe("start", function() {
@@ -144,8 +148,8 @@ PageController.extend("Dialog", {}, {
       this.element.pickemail();
     },
 
-    doAuthenticate: function() {
-      this.element.authenticate();
+    doAuthenticate: function(info) {
+      this.element.authenticate(info);
     },
 
     doForgotPassword: function(email) {
diff --git a/browserid/static/dialog/controllers/page_controller.js b/browserid/static/dialog/controllers/page_controller.js
index aee8e85b1005e935fed0c8e3bad4b572a5092b30..61b9f4d21f0398c125cfb7f93a6a558da8f24a81 100644
--- a/browserid/static/dialog/controllers/page_controller.js
+++ b/browserid/static/dialog/controllers/page_controller.js
@@ -38,6 +38,7 @@
 "use strict";
 
   var bid = BrowserID,  
+      ANIMATION_TIME = 250,
       identities = bid.Identities;
 
 
@@ -75,7 +76,7 @@
 
       if (body) {
         var bodyHtml = $.View("//dialog/views/" + body, body_vars);
-        $("#dialog").html(bodyHtml).hide().fadeIn(300, function() {
+        $("#dialog").html(bodyHtml).hide().fadeIn(ANIMATION_TIME, function() {
           $("#dialog input").eq(0).focus(); 
         });
       }
@@ -126,7 +127,7 @@
 
       $("body").removeClass("authenticated").addClass("error");
 
-      $("#error_dialog").fadeIn(500);
+      $("#error_dialog").fadeIn(ANIMATION_TIME);
     },
 
     /**
diff --git a/browserid/static/dialog/views/authenticate.ejs b/browserid/static/dialog/views/authenticate.ejs
index 6675f15a5bb3caf696b1e3d09fd6a092b01da7aa..81150fcbab15c53b08bb085340f91acd6e70b671 100644
--- a/browserid/static/dialog/views/authenticate.ejs
+++ b/browserid/static/dialog/views/authenticate.ejs
@@ -22,7 +22,7 @@
 
                     <li>
                         <label for="email" class="serif">Email</label>
-                        <input id="email" class="sans" type="email" autocapitalize="off" autocorrect="off" x-moz-errormessage="an email address is required">
+                        <input id="email" class="sans" type="email" autocapitalize="off" autocorrect="off" value="<%= email %>" />
 
                         <div id="email_format" class="tooltip" for="email">
                           This field must be an email address.