diff --git a/interface/resources/fonts/hifi-glyphs-1.32/fonts/hifi-glyphs.woff b/interface/resources/fonts/hifi-glyphs-1.32/fonts/hifi-glyphs.woff
deleted file mode 100644
index 534f8e5623..0000000000
Binary files a/interface/resources/fonts/hifi-glyphs-1.32/fonts/hifi-glyphs.woff and /dev/null differ
diff --git a/interface/resources/fonts/hifi-glyphs-1.32/fonts/hifi-glyphs.eot b/interface/resources/fonts/hifi-glyphs-1.33/fonts/hifi-glyphs.eot
similarity index 94%
rename from interface/resources/fonts/hifi-glyphs-1.32/fonts/hifi-glyphs.eot
rename to interface/resources/fonts/hifi-glyphs-1.33/fonts/hifi-glyphs.eot
index 93f4bc89a4..9afb712782 100644
Binary files a/interface/resources/fonts/hifi-glyphs-1.32/fonts/hifi-glyphs.eot and b/interface/resources/fonts/hifi-glyphs-1.33/fonts/hifi-glyphs.eot differ
diff --git a/interface/resources/fonts/hifi-glyphs-1.32/fonts/hifi-glyphs.svg b/interface/resources/fonts/hifi-glyphs-1.33/fonts/hifi-glyphs.svg
similarity index 98%
rename from interface/resources/fonts/hifi-glyphs-1.32/fonts/hifi-glyphs.svg
rename to interface/resources/fonts/hifi-glyphs-1.33/fonts/hifi-glyphs.svg
index 4f1fb2e690..554a3999be 100644
--- a/interface/resources/fonts/hifi-glyphs-1.32/fonts/hifi-glyphs.svg
+++ b/interface/resources/fonts/hifi-glyphs-1.33/fonts/hifi-glyphs.svg
@@ -154,4 +154,5 @@
 <glyph glyph-name="40-reload" unicode="&#70;" d="M365 261c-9 1-17-5-18-15-4-45-43-80-89-80-49 0-89 40-89 89 0 19 4 45 25 65 16 15 39 23 68 25l-15-16c-6-6-6-17 0-24 4-3 8-4 12-4 4 0 9 1 12 5l43 44c2 2 3 4 4 6 2 6 1 13-4 18l-44 44c-6 6-17 6-23 0-7-7-7-17 0-24l15-15c-38-2-69-14-91-35-23-21-36-53-36-88 0-68 55-123 123-123 64 0 116 47 122 110 1 9-5 18-15 18"/>
 <glyph glyph-name="forward" unicode="&#68;" d="M330 278l-95 70c-5 4-12 5-18 2-5-3-9-9-9-16l0-150c0-7 4-13 10-16 2-1 5-2 7-2 4 0 8 2 11 5l95 79c4 4 6 9 6 14-1 5-3 10-7 14"/>
 <glyph glyph-name="avatar-1" unicode="&#84;" d="M396 344l-2 2c-4 4-9 5-15 5-1 0-88-13-124-14-1 0-2 0-3 0-37 0-126 15-127 15-7 1-14-2-18-8l-2-4c-3-4-3-9-2-14 2-5 5-9 10-11 16-7 69-22 85-29 3-1 10-4 10-14 1-11-4-67-10-93-7-26-18-60-19-60-3-9 2-19 11-22l11-4c4-2 9-1 13 1 5 2 8 6 9 10l31 94 28-96c2-5 5-9 9-11 3-1 5-2 8-2 2 0 4 0 7 1l10 4c8 3 12 12 10 20 0 1-8 36-16 65-4 17-6 43-7 64-1 13-1 21-3 30 0 1 2 11 10 14 10 4 81 29 80 28 6 2 10 7 11 13 1 6-1 12-5 16z m-98 54c0-24-19-43-43-43-24 0-43 19-43 43 0 23 19 42 43 42 24 0 43-19 43-42z"/>
+<glyph glyph-name="steam-square" unicode="&#57397;" d="M391 327c0 15-5 28-16 39-11 11-24 16-39 16-15 0-28-5-39-16-11-11-16-24-16-39 0-15 5-28 16-39 11-11 24-16 39-16 15 0 28 5 39 16 11 11 16 24 16 39z m-174-168c0-16-5-29-16-40-11-11-25-16-40-16-11 0-21 2-30 8-9 5-16 13-20 22 9-4 19-8 28-12 11-4 22-4 34 1 11 5 19 13 24 25 5 11 5 22 0 34-5 11-13 19-25 24l-23 9c4 1 8 2 12 2 15 0 29-6 40-17 11-11 16-24 16-40z m258 234l0-274c0-23-8-42-24-58-16-16-35-24-58-24l-274 0c-23 0-42 8-58 24-16 16-24 35-24 58l0 44 49-20c4-18 12-32 26-44 14-11 30-17 49-17 19 0 37 7 51 20 15 14 23 30 25 50l99 72c28 0 53 10 73 30 20 20 30 44 30 73 0 28-10 52-30 73-20 20-45 30-73 30-28 0-53-10-73-30-20-20-30-44-30-72l-64-92c-2 0-5 0-8 0-15 0-28-4-40-11l-84 34 0 134c0 23 8 42 24 58 16 16 35 24 58 24l274 0c23 0 42-8 58-24 16-16 24-35 24-58z m-70-66c0-19-7-36-20-49-14-14-30-20-49-20-19 0-36 6-49 20-13 13-20 30-20 49 0 19 7 35 20 48 13 14 30 21 49 21 19 0 35-7 49-20 13-14 20-30 20-49z"/>
 </font></defs></svg>
diff --git a/interface/resources/fonts/hifi-glyphs-1.32/fonts/hifi-glyphs.ttf b/interface/resources/fonts/hifi-glyphs-1.33/fonts/hifi-glyphs.ttf
similarity index 94%
rename from interface/resources/fonts/hifi-glyphs-1.32/fonts/hifi-glyphs.ttf
rename to interface/resources/fonts/hifi-glyphs-1.33/fonts/hifi-glyphs.ttf
index e85c193fd0..b61455a9f1 100644
Binary files a/interface/resources/fonts/hifi-glyphs-1.32/fonts/hifi-glyphs.ttf and b/interface/resources/fonts/hifi-glyphs-1.33/fonts/hifi-glyphs.ttf differ
diff --git a/interface/resources/fonts/hifi-glyphs-1.33/fonts/hifi-glyphs.woff b/interface/resources/fonts/hifi-glyphs-1.33/fonts/hifi-glyphs.woff
new file mode 100644
index 0000000000..842065af36
Binary files /dev/null and b/interface/resources/fonts/hifi-glyphs-1.33/fonts/hifi-glyphs.woff differ
diff --git a/interface/resources/fonts/hifi-glyphs-1.32/icons-reference.html b/interface/resources/fonts/hifi-glyphs-1.33/icons-reference.html
similarity index 99%
rename from interface/resources/fonts/hifi-glyphs-1.32/icons-reference.html
rename to interface/resources/fonts/hifi-glyphs-1.33/icons-reference.html
index a6ffbd5436..2c0ebd1885 100644
--- a/interface/resources/fonts/hifi-glyphs-1.32/icons-reference.html
+++ b/interface/resources/fonts/hifi-glyphs-1.33/icons-reference.html
@@ -603,6 +603,10 @@
           <div class="icon icon-avatar-1"></div>
           <input type="text" readonly="readonly" value="avatar-1">
         </li>
+        <li>
+          <div class="icon icon-steam-square"></div>
+          <input type="text" readonly="readonly" value="steam-square">
+        </li>
       </ul>
       <h2>Character mapping</h2>
       <ul class="glyphs character-mapping">
@@ -1194,6 +1198,10 @@
           <div data-icon="T" class="icon"></div>
           <input type="text" readonly="readonly" value="T">
         </li>
+        <li>
+          <div data-icon="&#xe035;" class="icon"></div>
+          <input type="text" readonly="readonly" value="&amp;#xe035;">
+        </li>
       </ul>
     </div>
     <script>(function() {
diff --git a/interface/resources/fonts/hifi-glyphs-1.32/styles.css b/interface/resources/fonts/hifi-glyphs-1.33/styles.css
similarity index 99%
rename from interface/resources/fonts/hifi-glyphs-1.32/styles.css
rename to interface/resources/fonts/hifi-glyphs-1.33/styles.css
index 06c14b1126..1af5cb649d 100644
--- a/interface/resources/fonts/hifi-glyphs-1.32/styles.css
+++ b/interface/resources/fonts/hifi-glyphs-1.33/styles.css
@@ -479,3 +479,6 @@
 .icon-avatar-1:before {
   content: "\54";
 }
+.icon-steam-square:before {
+  content: "\e035";
+}
diff --git a/interface/resources/fonts/hifi-glyphs.ttf b/interface/resources/fonts/hifi-glyphs.ttf
index e85c193fd0..b61455a9f1 100644
Binary files a/interface/resources/fonts/hifi-glyphs.ttf and b/interface/resources/fonts/hifi-glyphs.ttf differ
diff --git a/interface/resources/images/steam.svg b/interface/resources/icons/steam.svg
similarity index 100%
rename from interface/resources/images/steam.svg
rename to interface/resources/icons/steam.svg
diff --git a/interface/resources/qml/LoginDialog.qml b/interface/resources/qml/LoginDialog.qml
index a58ebf99b4..2aacd3cc92 100644
--- a/interface/resources/qml/LoginDialog.qml
+++ b/interface/resources/qml/LoginDialog.qml
@@ -86,7 +86,7 @@ Windows.ModalWindow {
     }
 
     Component.onCompleted: {
-        bodyLoader.setSource("LoginDialog/LinkAccountBody.qml", { "loginDialog": loginDialog, "root": root });
+        bodyLoader.setSource("LoginDialog/LinkAccountBody.qml", { "loginDialog": loginDialog, "root": root, "bodyLoader": bodyLoader });
     }
 
 }
diff --git a/interface/resources/qml/LoginDialog/LinkAccountBody.qml b/interface/resources/qml/LoginDialog/LinkAccountBody.qml
index 71ae881313..3c7fe41938 100644
--- a/interface/resources/qml/LoginDialog/LinkAccountBody.qml
+++ b/interface/resources/qml/LoginDialog/LinkAccountBody.qml
@@ -1,8 +1,8 @@
 //
 //  LinkAccountBody.qml
 //
-//  Created by Clement on 7/18/16
-//  Copyright 2015 High Fidelity, Inc.
+//  Created by Wayne Chen on 10/18/18
+//  Copyright 2018 High Fidelity, Inc.
 //
 //  Distributed under the Apache License, Version 2.0.
 //  See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
@@ -23,9 +23,9 @@ Item {
     clip: true
     height: root.pane.height
     width: root.pane.width
-    property bool isTablet: root.isTablet
     property bool failAfterSignUp: false
     property string fontFamily: "Cairo"
+    property int fontSize: 24
     property bool fontBold: true
 
     property bool keyboardEnabled: false
@@ -33,6 +33,7 @@ Item {
     property bool punctuationMode: false
 
     property bool isLogIn: false
+    property bool atSignIn: false
     property bool withSteam: false
 
     onKeyboardRaisedChanged: d.resize();
@@ -54,7 +55,7 @@ Item {
                     4 * hifi.dimensions.contentSpacing.y;
 
             var newWidth = Math.max(d.minWidth, Math.min(d.maxWidth, targetWidth));
-            if(!isNaN(newWidth)) {
+            if (!isNaN(newWidth)) {
                 parent.width = root.width = newWidth;
             }
 
@@ -63,27 +64,84 @@ Item {
         }
     }
 
+    // timer to kill the dialog upon login success
+    Timer {
+        id: successTimer
+        interval: 500;
+        running: false;
+        repeat: false;
+        onTriggered: {
+            root.tryDestroy();
+        }
+    }
+
+    // timer to kill the dialog upon login failure
+    Timer {
+        id: failureTimer
+        interval: 1000;
+        running: false;
+        repeat: false;
+        onTriggered: {
+            resetContainers();
+            loginContainer.visible = true;
+        }
+    }
+
     function login() {
+        linkAccountBody.toggleLoading();
         if (linkAccountBody.isLogIn) {
             loginDialog.login(emailField.text, passwordField.text);
         } else {
-            loginDialog.signup(emailField.text, usernameField.text, passwordField.text);
+            loginDialog.signup(usernameField.text, emailField.text, passwordField.text);
         }
-        linkAccountBody.toggleLoggingIn(false);
+    }
+    function resetContainers() {
+        splashContainer.visible = false;
+        loggingInContainer.visible = false;
+        loginContainer.visible = false;
     }
 
-    function toggleLoggingIn(loggedIn) {
+    function toggleLoading() {
         // For the process of logging in.
+        linkAccountBody.resetContainers();
+        loggingInContainer.visible = true;
         if (linkAccountBody.withSteam) {
-            loginContainer.visible = false;
+            loggingInGlyph.visible = true;
+            loggingInText.text = "Logging in to Steam";
+            loggingInText.x = loggingInHeader.width/2 - loggingInTextMetrics.width/2 + loggingInGlyphTextMetrics.width/2;
+        } else {
+            loggingInText.text = "Logging in";
+            loggingInText.anchors.bottom = loggingInHeader.bottom;
+            loggingInText.anchors.bottomMargin = hifi.dimensions.contentSpacing.y;
         }
-        else {
-
+        linkAccountSpinner.visible = true;
+    }
+    function loadingSuccess(success, errorString) {
+        linkAccountSpinner.visible = false;
+        if (!success) {
+            loginErrorMessage.visible = true;
+            loginErrorMessage.text = errorString !== "" ? errorString : linkAccountBody.isLogIn ? "bad user/pass combo." : "unknown error.";
+            loginErrorMessage.anchors.bottom = linkAccountBody.isLogIn ? emailField.top : usernameField.top;
+            failureTimer.start();
+            return;
         }
+        if (linkAccountBody.withSteam) {
+            // reset the flag.
+            linkAccountBody.withSteam = false;
+            loggingInGlyph.visible = false;
+            loggingInText.text = "You are now logged into Steam!"
+            loggingInText.anchors.centerIn = loggingInHeader;
+            loggingInText.anchors.bottom = loggingInHeader.bottom;
+            loggedInGlyph.visible = true;
+        } else {
+            loggingInText.text = "You are now logged in!";
+        }
+        successTimer.start();
     }
 
     function toggleSignIn(signIn, isLogIn) {
         // going to/from sign in/up dialog.
+        linkAccountBody.atSignIn = signIn;
         linkAccountBody.isLogIn = isLogIn;
         if (signIn) {
             usernameField.visible = !isLogIn;
@@ -92,6 +150,8 @@ Item {
                 loginButtonAtSignIn.text = "Log In";
                 loginButtonAtSignIn.color = hifi.buttons.black;
                 emailField.placeholderText = "Username or Email";
+                var savedUsername = Settings.getValue("wallet/savedUsername", "");
+                emailField.text = savedUsername === "Unknown user" ? "" : savedUsername;
                 emailField.anchors.top = loginContainer.top;
                 emailField.anchors.topMargin = !root.isTablet ? 0.2 * root.pane.height : 0.24 * root.pane.height;
                 cantAccessContainer.anchors.topMargin = !root.isTablet ? 3.5 * hifi.dimensions.contentSpacing.y : hifi.dimensions.contentSpacing.y;
@@ -99,9 +159,12 @@ Item {
                 loginButtonAtSignIn.text = "Sign Up";
                 loginButtonAtSignIn.color = hifi.buttons.blue;
                 emailField.placeholderText = "Email";
+                emailField.text = "";
                 emailField.anchors.top = usernameField.bottom;
                 emailField.anchors.topMargin = 1.5 * hifi.dimensions.contentSpacing.y;
+                passwordField.text = "";
             }
+            loginErrorMessage.visible = false;
         }
 
         splashContainer.visible = !signIn;
@@ -113,15 +176,6 @@ Item {
 
     }
 
-    function toggleLoading(isLoading) {
-        linkAccountSpinner.visible = isLoading
-        form.visible = !isLoading
-
-        if (loginDialog.isSteamRunning()) {
-            additionalInformation.visible = !isLoading
-        }
-    }
-
     Item {
         id: topContainer
         width: root.pane.width
@@ -152,6 +206,105 @@ Item {
                 horizontalAlignment: Image.AlignHCenter
             }
         }
+
+        Item {
+            id: loggingInContainer
+            width: parent.width
+            height: parent.height
+            onHeightChanged: d.resize(); onWidthChanged: d.resize();
+            visible: false
+
+            Item {
+                id: loggingInHeader
+                width: parent.width
+                height: 0.5 * parent.height
+                anchors {
+                    top: parent.top
+                }
+                TextMetrics {
+                    id: loggingInGlyphTextMetrics;
+                    font: loggingInGlyph.font;
+                    text: loggingInGlyph.text;
+                }
+                HifiStylesUit.HiFiGlyphs {
+                    id: loggingInGlyph;
+                    text: hifi.glyphs.steamSquare;
+                    // Color
+                    color: "white";
+                    // Size
+                    size: 31;
+                    // Anchors
+                    anchors.right: loggingInText.left;
+                    anchors.rightMargin: linkAccountBody.loggingInGlyphRightMargin
+                    anchors.bottom: parent.bottom;
+                    anchors.bottomMargin: hifi.dimensions.contentSpacing.y
+                    // Alignment
+                    horizontalAlignment: Text.AlignHCenter;
+                    verticalAlignment: Text.AlignVCenter;
+                    visible: loginDialog.isSteamRunning();
+                }
+
+                TextMetrics {
+                    id: loggingInTextMetrics;
+                    font: loggingInText.font;
+                    text: loggingInText.text;
+                }
+                Text {
+                    id: loggingInText;
+                    width: loggingInTextMetrics.width
+                    anchors.bottom: parent.bottom;
+                    anchors.bottomMargin: hifi.dimensions.contentSpacing.y
+                    anchors.left: parent.left;
+                    anchors.leftMargin: (parent.width - loggingInTextMetrics.width) / 2
+                    color: "white";
+                    font.family: linkAccountBody.fontFamily
+                    font.pixelSize: linkAccountBody.fontSize
+                    font.bold: linkAccountBody.fontBold
+                    verticalAlignment: Text.AlignVCenter
+                    horizontalAlignment: Text.AlignHCenter
+                    text: "Logging in"
+                }
+            }
+            Item {
+                id: loggingInFooter
+                width: parent.width
+                height: 0.5 * parent.height
+                anchors {
+                    top: loggingInHeader.bottom
+                }
+                AnimatedImage {
+                    id: linkAccountSpinner
+                    source: "../../icons/loader-snake-64-w.gif"
+                    width: 128
+                    height: width
+                    anchors.left: parent.left;
+                    anchors.leftMargin: (parent.width - width) / 2;
+                    anchors.top: parent.top
+                    anchors.topMargin: hifi.dimensions.contentSpacing.y
+                }
+                TextMetrics {
+                    id: loggedInGlyphTextMetrics;
+                    font: loggedInGlyph.font;
+                    text: loggedInGlyph.text;
+                }
+                HifiStylesUit.HiFiGlyphs {
+                    id: loggedInGlyph;
+                    text: hifi.glyphs.steamSquare;
+                    // Size
+                    size: 78;
+                    // Anchors
+                    anchors.left: parent.left;
+                    anchors.leftMargin: (parent.width - loggedInGlyph.size) / 2;
+                    anchors.top: parent.top
+                    anchors.topMargin: hifi.dimensions.contentSpacing.y
+                    // Alignment
+                    horizontalAlignment: Text.AlignHCenter;
+                    verticalAlignment: Text.AlignVCenter;
+                    visible: loginDialog.isSteamRunning();
+
+                }
+            }
+        }
         Item {
             id: loginContainer
             width: parent.width
@@ -162,6 +315,20 @@ Item {
             }
             visible: false
 
+            Text {
+                id: loginErrorMessage;
+                anchors.bottom: emailField.top;
+                anchors.bottomMargin: 2
+                anchors.left: emailField.left;
+                color: "red";
+                font.family: linkAccountBody.fontFamily
+                font.pixelSize: 12
+                verticalAlignment: Text.AlignVCenter
+                horizontalAlignment: Text.AlignHCenter
+                text: ""
+                visible: false
+            }
+
             HifiControlsUit.TextField {
                 id: usernameField
                 width: banner.width
@@ -190,11 +357,6 @@ Item {
                 placeholderText: "Username or Email"
                 activeFocusOnPress: true
                 onHeightChanged: d.resize(); onWidthChanged: d.resize();
-
-                Component.onCompleted: {
-                    var savedUsername = Settings.getValue("wallet/savedUsername", "");
-                    emailField.text = savedUsername === "Unknown user" ? "" : savedUsername;
-                }
             }
             HifiControlsUit.TextField {
                 id: passwordField
@@ -296,7 +458,7 @@ Item {
                     lineHeight: 1
                     color: "white"
                     font.family: linkAccountBody.fontFamily
-                    font.pixelSize: 24
+                    font.pixelSize: linkAccountBody.fontSize
                     font.capitalization: Font.AllUppercase;
                     font.bold: linkAccountBody.fontBold
                     lineHeightMode: Text.ProportionalHeight
@@ -307,6 +469,7 @@ Item {
                     acceptedButtons: Qt.LeftButton
                     onClicked: {
                         toggleSignIn(false, true);
+                        linkAccountBody.isLogIn = false;
                     }
                 }
             }
@@ -316,7 +479,7 @@ Item {
                 height: d.minHeightButton
                 text: qsTr("Log In")
                 fontFamily: linkAccountBody.fontFamily
-                fontSize: signUpButton.fontSize
+                fontSize: linkAccountBody.fontSize
                 fontBold: linkAccountBody.fontBold
                 anchors {
                     top: cancelContainer.top
@@ -370,10 +533,10 @@ Item {
                     topMargin: 0.1 * parent.height
                 }
                 wrapMode: Text.WordWrap
-                lineHeight: 1
+                lineHeight: 0.5
                 color: "white"
                 font.family: linkAccountBody.fontFamily
-                font.pixelSize: 48
+                font.pixelSize: 2 * linkAccountBody.fontSize
                 font.bold: linkAccountBody.fontBold
                 lineHeightMode: Text.ProportionalHeight
                 horizontalAlignment: Text.AlignHCenter
@@ -386,15 +549,14 @@ Item {
                 height: d.minHeightButton
                 color: hifi.buttons.blue
                 fontFamily: linkAccountBody.fontFamily
-                fontSize: 24
+                fontSize: linkAccountBody.fontSize
                 fontBold: linkAccountBody.fontBold
                 anchors {
                     bottom: parent.bottom
                     bottomMargin: 0.1 * parent.height
                     left: parent.left
-                    leftMargin: (parent.width - signUpButton.width) / 2
+                    leftMargin: (parent.width - d.minWidthButton) / 2
                 }
-
                 onClicked: {
                     toggleSignIn(true, false);
                 }
@@ -423,11 +585,11 @@ Item {
 
             HifiControlsUit.Button {
                 id: loginButton
-                width: signUpButton.width
-                height: signUpButton.height
+                width: d.minWidthButton
+                height: d.minHeightButton
                 text: qsTr("Log In")
                 fontFamily: linkAccountBody.fontFamily
-                fontSize: signUpButton.fontSize
+                fontSize: linkAccountBody.fontSize
                 fontBold: linkAccountBody.fontBold
                 anchors {
                     top: parent.top
@@ -440,104 +602,29 @@ Item {
                     toggleSignIn(true, true);
                 }
             }
-            Button {
+            HifiControlsUit.Button {
                 id: steamLoginButton;
-                width: signUpButton.width
-                height: signUpButton.height
-                property int color: hifi.buttons.black;
-                property int colorScheme: hifi.colorSchemes.light;
-
+                width: d.minWidthButton
+                height: d.minHeightButton
+                color: hifi.buttons.black;
                 anchors {
                     top: loginButton.bottom
                     topMargin: hifi.dimensions.contentSpacing.y
                     left: parent.left
                     leftMargin: (parent.width - steamLoginButton.width) / 2
                 }
-
-                onHoveredChanged: {
-                    if (hovered) {
-                        Tablet.playSound(TabletEnums.ButtonHover);
-                    }
-                }
-
-                onFocusChanged: {
-                    if (focus) {
-                        Tablet.playSound(TabletEnums.ButtonHover);
-                    }
-                }
-
+                text: qsTr("Steam Log In")
+                fontFamily: linkAccountBody.fontFamily
+                fontSize: linkAccountBody.fontSize
+                fontBold: linkAccountBody.fontBold
+                buttonGlyph: hifi.glyphs.steamSquare
+                buttonGlyphRightMargin: 10
                 onClicked: {
-                    Tablet.playSound(TabletEnums.ButtonClick);
-                }
-
-                style: OriginalStyles.ButtonStyle {
-                    background: Rectangle {
-                        radius: 4;
-                        gradient: Gradient {
-                            GradientStop {
-                                position: 0.2
-                                color: {
-                                    if (!control.enabled) {
-                                        hifi.buttons.disabledColorStart[control.colorScheme]
-                                    } else if (control.pressed) {
-                                        hifi.buttons.pressedColor[control.color]
-                                    } else if (control.hovered) {
-                                        hifi.buttons.hoveredColor[control.color]
-                                    } else {
-                                        hifi.buttons.colorStart[control.color]
-                                    }
-                                }
-                            }
-                            GradientStop {
-                                position: 1.0
-                                color: {
-                                    if (!control.enabled) {
-                                        hifi.buttons.disabledColorFinish[control.colorScheme]
-                                    } else if (control.pressed) {
-                                        hifi.buttons.pressedColor[control.color]
-                                    } else if (control.hovered) {
-                                        hifi.buttons.hoveredColor[control.color]
-                                    } else {
-                                        hifi.buttons.colorFinish[control.color]
-                                    }
-                                }
-                            }
-                        }
-                    }
-
-                    label: Item {
-                        Image {
-                            id: steamIcon;
-                            anchors.right: steamIconLabel.left;
-                            anchors.rightMargin: 5;
-                            anchors.verticalCenter: parent.verticalCenter;
-                            source: "../../images/steam.svg";
-                            horizontalAlignment: Image.AlignHCenter;
-                            sourceSize.width: signUpButton.fontSize + 3
-                            sourceSize.height: signUpButton.fontSize + 3
-                        }
-                        TextMetrics {
-                            id: steamIconLabelTextMetrics;
-                            font: steamIconLabel.font;
-                            text: steamIconLabel.text;
-                        }
-                        Text {
-                            id: steamIconLabel;
-                            text: "Steam Log In"
-                            anchors.verticalCenter: parent.verticalCenter;
-                            width: steamIconLabelTextMetrics.width;
-                            x: parent.width/2 - steamIconLabelTextMetrics.width/2 + steamIcon.width/2;
-                            font.capitalization: Font.AllUppercase;
-                            verticalAlignment: Text.AlignVCenter;
-                            horizontalAlignment: Text.AlignHCenter;
-                            font.family: linkAccountBody.fontFamily
-                            font.pixelSize: signUpButton.fontSize;
-                            font.bold: linkAccountBody.fontBold
-                            color: enabled ? hifi.buttons.textColor[control.color]
-                                            : hifi.buttons.disabledTextColor[control.colorScheme]
-                        }
-                    }
+                    linkAccountBody.withSteam = true;
+                    linkAccountBody.toggleLoading();
+                    loginDialog.linkSteam();
                 }
+                visible: loginDialog.isSteamRunning();
             }
         }
         Item {
@@ -556,7 +643,7 @@ Item {
                 lineHeight: 1
                 color: "white"
                 font.family: linkAccountBody.fontFamily
-                font.pixelSize: 24
+                font.pixelSize: linkAccountBody.fontSize
                 font.bold: linkAccountBody.fontBold
                 lineHeightMode: Text.ProportionalHeight
                 horizontalAlignment: Text.AlignHCenter
@@ -581,11 +668,24 @@ Item {
             root.keyboardRaised = Qt.binding( function() { return keyboardRaised; })
         }
         d.resize();
-
     }
 
     Connections {
         target: loginDialog
+        onHandleCreateFailed: {
+            console.log("Create Failed")
+        }
+        onHandleCreateCompleted: {
+            console.log("Create Completed")
+        }
+        onHandleSignupFailed: {
+            console.log("Sign Up Failed")
+            loadingSuccess(false, errorString)
+        }
+        onHandleSignupCompleted: {
+            console.log("Sign Up Completed")
+            loadingSuccess(true)
+        }
         onHandleLoginCompleted: {
             console.log("Login Succeeded")
             var poppedUp = Settings.getValue("loginDialogPoppedUp", false);
@@ -598,10 +698,9 @@ Item {
                 Settings.setValue("loginDialogPoppedUp", false);
             }
             if (loginDialog.isSteamRunning()) {
-                loginDialog.linkSteam()
-            } else {
-                // TODO you are now logged in
+                loginDialog.linkSteam();
             }
+            loadingSuccess(true)
         }
         onHandleLoginFailed: {
             console.log("Login Failed")
@@ -614,22 +713,21 @@ Item {
                 UserActivityLogger.logAction("encourageLoginDialog", data);
                 Settings.setValue("loginDialogPoppedUp", false);
             }
-            toggleLoading(false)
+            loadingSuccess(false)
         }
         onHandleLinkCompleted: {
             console.log("Link Succeeded")
-
-            bodyLoader.item.width = root.pane.width
-            bodyLoader.item.height = root.pane.height
+            loadingSuccess(true)
         }
         onHandleLinkFailed: {
             console.log("Link Failed")
-            toggleLoading(false)
+            var error = "There was an unknown error while creating your account. Please try again later.";
+            loadingSuccess(false, error);
         }
     }
 
     Keys.onPressed: {
-        if (!visible) {
+        if (!visible && !atSignIn) {
             return;
         }
 
diff --git a/interface/resources/qml/LoginDialog/SignInBody.qml b/interface/resources/qml/LoginDialog/SignInBody.qml
index 539c830d64..94a56cbb18 100644
--- a/interface/resources/qml/LoginDialog/SignInBody.qml
+++ b/interface/resources/qml/LoginDialog/SignInBody.qml
@@ -1,8 +1,8 @@
 //
 //  SignInBody.qml
 //
-//  Created by Clement on 7/18/16
-//  Copyright 2015 High Fidelity, Inc.
+//  Created by Wayne Chen on 10/18/18
+//  Copyright 2018 High Fidelity, Inc.
 //
 //  Distributed under the Apache License, Version 2.0.
 //  See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
@@ -10,70 +10,188 @@
 
 import Hifi 1.0
 import QtQuick 2.7
+import QtQuick.Controls 1.4
 import QtQuick.Controls.Styles 1.4 as OriginalStyles
 
 import controlsUit 1.0 as HifiControlsUit
 import stylesUit 1.0 as HifiStylesUit
 
+import TabletScriptingInterface 1.0
+
 Item {
     id: signInBody
     clip: true
     height: root.pane.height
     width: root.pane.width
+    property bool failAfterSignUp: false
+    property string fontFamily: "Cairo"
+    property int fontSize: 24
+    property bool fontBold: true
 
-    property bool required: false
+    property bool keyboardEnabled: false
+    property bool keyboardRaised: false
+    property bool punctuationMode: false
 
-    function login() {
-        bodyLoader.setSource("LoggingInBody.qml");
-        if (!root.isTablet) {
-            bodyLoader.item.width = root.pane.width;
-            bodyLoader.item.height = root.pane.height;
-        }
-        loginDialog.login(usernameField.text, passwordField.text);
-    }
+    property bool logIn: isLogIn
+    property bool signIn: atSignIn
+    property bool withSteam: loginDialog.isSteamRunning()
 
-    function cancel() {
-        bodyLoader.setSource("LinkAccountBody.qml");
-        if (!root.isTablet) {
-            bodyLoader.item.width = root.pane.width;
-            bodyLoader.item.height = root.pane.height;
-        }
-    }
+    onKeyboardRaisedChanged: d.resize();
 
     QtObject {
         id: d
         readonly property int minWidth: 480
+        readonly property int minWidthButton: !root.isTablet ? 256 : 174
         property int maxWidth: root.isTablet ? 1280 : Window.innerWidth
         readonly property int minHeight: 120
+        readonly property int minHeightButton: !root.isTablet ? 56 : 42
         property int maxHeight: root.isTablet ? 720 : Window.innerHeight
 
         function resize() {
             maxWidth = root.isTablet ? 1280 : Window.innerWidth;
             maxHeight = root.isTablet ? 720 : Window.innerHeight;
-            var targetWidth = Math.max(titleWidth, form.contentWidth)
-            var targetHeight = 4 * hifi.dimensions.contentSpacing.y + form.height
+            var targetWidth = Math.max(titleWidth, topContainer.width);
+            var targetHeight =  hifi.dimensions.contentSpacing.y + topContainer.height +
+                    4 * hifi.dimensions.contentSpacing.y;
+
+            var newWidth = Math.max(d.minWidth, Math.min(d.maxWidth, targetWidth));
+            if (!isNaN(newWidth)) {
+                parent.width = root.width = newWidth;
+            }
 
-            parent.width = root.width = Math.max(d.minWidth, Math.min(d.maxWidth, targetWidth))
             parent.height = root.height = Math.max(d.minHeight, Math.min(d.maxHeight, targetHeight))
+                    + (keyboardEnabled && keyboardRaised ? (200 + 2 * hifi.dimensions.contentSpacing.y) : hifi.dimensions.contentSpacing.y);
         }
     }
-    
+
+    // timer to kill the dialog upon login success
+    Timer {
+        id: successTimer
+        interval: 500;
+        running: false;
+        repeat: false;
+        onTriggered: {
+            root.tryDestroy();
+        }
+    }
+
+    // timer to kill the dialog upon login failure
+    Timer {
+        id: failureTimer
+        interval: 1000;
+        running: false;
+        repeat: false;
+        onTriggered: {
+            resetContainers();
+            loginContainer.visible = true;
+        }
+    }
+
+    function login() {
+        signInBody.toggleLoading();
+        if (signInBody.isLogIn) {
+            loginDialog.login(emailField.text, passwordField.text);
+        } else {
+            loginDialog.signup(usernameField.text, emailField.text, passwordField.text);
+        }
+    }
+
+    function resetContainers() {
+        loggingInContainer.visible = false;
+        loginContainer.visible = false;
+    }
+
+    function toggleLoading() {
+        // For the process of logging in.
+        signInBody.resetContainers();
+        loggingInContainer.visible = true;
+        if (signInBody.withSteam) {
+            loggingInGlyph.visible = true;
+            loggingInText.text = "Logging in to Steam";
+            loggingInText.x = loggingInHeader.width/2 - loggingInTextMetrics.width/2 + loggingInGlyphTextMetrics.width/2;
+        } else {
+            loggingInText.text = "Logging in";
+            loggingInText.anchors.bottom = loggingInHeader.bottom;
+            loggingInText.anchors.bottomMargin = hifi.dimensions.contentSpacing.y;
+        }
+        linkAccountSpinner.visible = true;
+    }
+    function loadingSuccess(success, errorString) {
+        linkAccountSpinner.visible = false;
+        if (!success) {
+            loginErrorMessage.visible = true;
+            loginErrorMessage.text = errorString !== "" ? errorString : signInBody.isLogIn ? "bad user/pass combo." : "unknown error.";
+            loginErrorMessage.anchors.bottom = signInBody.isLogIn ? emailField.top : usernameField.top;
+            failureTimer.start();
+            return;
+        }
+        if (signInBody.withSteam) {
+            // reset the flag.
+            signInBody.withSteam = false;
+            loggingInGlyph.visible = false;
+            loggingInText.text = "You are now logged into Steam!"
+            loggingInText.anchors.centerIn = loggingInHeader;
+            loggingInText.anchors.bottom = loggingInHeader.bottom;
+            loggedInGlyph.visible = true;
+        } else {
+            loggingInText.text = "You are now logged in!";
+        }
+        successTimer.start();
+    }
+
+    function toggleSignIn(signIn, isLogIn) {
+        // going to/from sign in/up dialog.
+        // signInBody.atSignIn = signIn;
+        // signInBody.isLogIn = isLogIn;
+        if (signIn) {
+            usernameField.visible = !isLogIn;
+            cantAccessContainer.visible = isLogIn;
+            if (isLogIn) {
+                loginButtonAtSignIn.text = "Log In";
+                loginButtonAtSignIn.color = hifi.buttons.black;
+                emailField.placeholderText = "Username or Email";
+                var savedUsername = Settings.getValue("wallet/savedUsername", "");
+                emailField.text = savedUsername === "Unknown user" ? "" : savedUsername;
+                emailField.anchors.top = loginContainer.top;
+                emailField.anchors.topMargin = !root.isTablet ? 0.2 * root.pane.height : 0.24 * root.pane.height;
+                cantAccessContainer.anchors.topMargin = !root.isTablet ? 3.5 * hifi.dimensions.contentSpacing.y : hifi.dimensions.contentSpacing.y;
+            } else {
+                loginButtonAtSignIn.text = "Sign Up";
+                loginButtonAtSignIn.color = hifi.buttons.blue;
+                emailField.placeholderText = "Email";
+                emailField.text = "";
+                emailField.anchors.top = usernameField.bottom;
+                emailField.anchors.topMargin = 1.5 * hifi.dimensions.contentSpacing.y;
+                passwordField.text = "";
+            }
+            loginErrorMessage.visible = false;
+        }
+
+        loginContainer.visible = signIn;
+
+    }
+
     Item {
-        width: parent.width
-        height: parent.height
+        id: topContainer
+        width: root.pane.width
+        height: root.pane.height
+        onHeightChanged: d.resize(); onWidthChanged: d.resize();
+
         Rectangle {
-            width: parent.width
+            id: topOpaqueRect
             height: parent.height
-            opacity: 0.7
+            width: parent.width
+            opacity: 0.9
             color: "black"
         }
+
         Item {
             id: bannerContainer
             width: parent.width
             height: banner.height
             anchors {
                 top: parent.top
-                topMargin: 0.17 * parent.height
+                topMargin: 85
             }
             Image {
                 id: banner
@@ -82,48 +200,177 @@ Item {
                 horizontalAlignment: Image.AlignHCenter
             }
         }
-        Column {
-            id: form
-            width: parent.width
-            onHeightChanged: d.resize(); onWidthChanged: d.resize();
 
+        Item {
+            id: loggingInContainer
+            width: parent.width
+            height: parent.height
+            onHeightChanged: d.resize(); onWidthChanged: d.resize();
+            visible: false
+
+            Item {
+                id: loggingInHeader
+                width: parent.width
+                height: 0.5 * parent.height
+                anchors {
+                    top: parent.top
+                }
+                TextMetrics {
+                    id: loggingInGlyphTextMetrics;
+                    font: loggingInGlyph.font;
+                    text: loggingInGlyph.text;
+                }
+                HifiStylesUit.HiFiGlyphs {
+                    id: loggingInGlyph;
+                    text: hifi.glyphs.steamSquare;
+                    // Color
+                    color: "white";
+                    // Size
+                    size: 31;
+                    // Anchors
+                    anchors.right: loggingInText.left;
+                    anchors.rightMargin: signInBody.loggingInGlyphRightMargin
+                    anchors.bottom: parent.bottom;
+                    anchors.bottomMargin: hifi.dimensions.contentSpacing.y
+                    // Alignment
+                    horizontalAlignment: Text.AlignHCenter;
+                    verticalAlignment: Text.AlignVCenter;
+                    visible: loginDialog.isSteamRunning();
+                }
+
+                TextMetrics {
+                    id: loggingInTextMetrics;
+                    font: loggingInText.font;
+                    text: loggingInText.text;
+                }
+                Text {
+                    id: loggingInText;
+                    width: loggingInTextMetrics.width
+                    anchors.bottom: parent.bottom;
+                    anchors.bottomMargin: hifi.dimensions.contentSpacing.y
+                    anchors.left: parent.left;
+                    anchors.leftMargin: (parent.width - loggingInTextMetrics.width) / 2
+                    color: "white";
+                    font.family: signInBody.fontFamily
+                    font.pixelSize: signInBody.fontSize
+                    font.bold: signInBody.fontBold
+                    verticalAlignment: Text.AlignVCenter
+                    horizontalAlignment: Text.AlignHCenter
+                    text: "Logging in"
+                }
+            }
+            Item {
+                id: loggingInFooter
+                width: parent.width
+                height: 0.5 * parent.height
+                anchors {
+                    top: loggingInHeader.bottom
+                }
+                AnimatedImage {
+                    id: linkAccountSpinner
+                    source: "../../icons/loader-snake-64-w.gif"
+                    width: 128
+                    height: width
+                    anchors.left: parent.left;
+                    anchors.leftMargin: (parent.width - width) / 2;
+                    anchors.top: parent.top
+                    anchors.topMargin: hifi.dimensions.contentSpacing.y
+                }
+                TextMetrics {
+                    id: loggedInGlyphTextMetrics;
+                    font: loggedInGlyph.font;
+                    text: loggedInGlyph.text;
+                }
+                HifiStylesUit.HiFiGlyphs {
+                    id: loggedInGlyph;
+                    text: hifi.glyphs.steamSquare;
+                    // Size
+                    size: 78;
+                    // Anchors
+                    anchors.left: parent.left;
+                    anchors.leftMargin: (parent.width - loggedInGlyph.size) / 2;
+                    anchors.top: parent.top
+                    anchors.topMargin: hifi.dimensions.contentSpacing.y
+                    // Alignment
+                    horizontalAlignment: Text.AlignHCenter;
+                    verticalAlignment: Text.AlignVCenter;
+                    visible: loginDialog.isSteamRunning();
+
+                }
+            }
+        }
+        Item {
+            id: loginContainer
+            width: parent.width
+            height: parent.height - (bannerContainer.height + 1.5 * hifi.dimensions.contentSpacing.y)
             anchors {
                 top: bannerContainer.bottom
                 topMargin: 1.5 * hifi.dimensions.contentSpacing.y
             }
-            spacing: 2 * hifi.dimensions.contentSpacing.y
+            visible: true
+
+            Text {
+                id: loginErrorMessage;
+                anchors.bottom: emailField.top;
+                anchors.bottomMargin: 2
+                anchors.left: emailField.left;
+                color: "red";
+                font.family: signInBody.fontFamily
+                font.pixelSize: 12
+                verticalAlignment: Text.AlignVCenter
+                horizontalAlignment: Text.AlignHCenter
+                text: ""
+                visible: false
+            }
 
             HifiControlsUit.TextField {
                 id: usernameField
-                width: 0.254 * parent.width
+                width: banner.width
+                font.family: signInBody.fontFamily
+                placeholderText: "Username"
+                anchors {
+                    top: parent.top
+                    topMargin: 0.2 * parent.height
+                    left: parent.left
+                    leftMargin: (parent.width - usernameField.width) / 2
+                }
+                visible: false
+            }
+
+            HifiControlsUit.TextField {
+                id: emailField
+                width: banner.width
+                font.family: signInBody.fontFamily
                 text: Settings.getValue("wallet/savedUsername", "");
+                anchors {
+                    top: parent.top
+                    left: parent.left
+                    leftMargin: (parent.width - emailField.width) / 2
+                }
                 focus: true
                 placeholderText: "Username or Email"
                 activeFocusOnPress: true
                 onHeightChanged: d.resize(); onWidthChanged: d.resize();
-
-                onFocusChanged: {
-                    root.text = "";
-                }
-                Component.onCompleted: {
-                    var savedUsername = Settings.getValue("wallet/savedUsername", "");
-                    usernameField.text = savedUsername === "Unknown user" ? "" : savedUsername;
-                }
             }
             HifiControlsUit.TextField {
                 id: passwordField
-                width: 0.254 * parent.width
+                width: banner.width
+                font.family: signInBody.fontFamily
                 placeholderText: "Password"
                 activeFocusOnPress: true
                 echoMode: passwordFieldMouseArea.showPassword ? TextInput.Normal : TextInput.Password
-                onHeightChanged: d.resize(); onWidthChanged: d.resize();
+                anchors {
+                    top: emailField.bottom
+                    topMargin: 1.5 * hifi.dimensions.contentSpacing.y
+                    left: parent.left
+                    leftMargin: (parent.width - emailField.width) / 2
+                }
 
                 onFocusChanged: {
-                    root.text = "";
                     root.isPassword = true;
                 }
 
-                Rectangle {
+                Item {
                     id: showPasswordHitbox
                     z: 10
                     x: passwordField.width - ((passwordField.height) * 31 / 23)
@@ -132,7 +379,6 @@ Item {
                     anchors {
                         right: parent.right
                     }
-                    color: "transparent"
 
                     Image {
                         id: showPasswordImage
@@ -157,71 +403,194 @@ Item {
                             }
                         }
                     }
+                }
+                Keys.onReturnPressed: {
+                    signInBody.login()
+                }
+            }
+            HifiControlsUit.CheckBox {
+                id: autoLogoutCheckbox
+                checked: !Settings.getValue("wallet/autoLogout", false);
+                text: qsTr("Keep Me Logged In")
+                boxSize: 18;
+                labelFontFamily: signInBody.fontFamily
+                labelFontSize: 18;
+                color: hifi.colors.white;
+                anchors {
+                    top: passwordField.bottom;
+                    topMargin: hifi.dimensions.contentSpacing.y;
+                    right: passwordField.right;
+                }
+                onCheckedChanged: {
+                    Settings.setValue("wallet/autoLogout", !checked);
+                    if (checked) {
+                        Settings.setValue("wallet/savedUsername", Account.username);
+                    } else {
+                        Settings.setValue("wallet/savedUsername", "");
+                    }
+                }
+                Component.onDestruction: {
+                    Settings.setValue("wallet/autoLogout", !checked);
+                }
+            }
+            Item {
+                id: cancelContainer
+                width: cancelText.width
+                height: d.minHeightButton
+                anchors {
+                    top: autoLogoutCheckbox.bottom
+                    topMargin: hifi.dimensions.contentSpacing.y
+                    left: parent.left
+                    leftMargin: (parent.width - passwordField.width) / 2
+                }
+                Text {
+                    id: cancelText
+                    anchors.centerIn: parent
+                    text: qsTr("Cancel");
 
+                    lineHeight: 1
+                    color: "white"
+                    font.family: signInBody.fontFamily
+                    font.pixelSize: signInBody.fontSize
+                    font.capitalization: Font.AllUppercase;
+                    font.bold: signInBody.fontBold
+                    lineHeightMode: Text.ProportionalHeight
+                }
+                MouseArea {
+                    id: cancelArea
+                    anchors.fill: parent
+                    acceptedButtons: Qt.LeftButton
+                    onClicked: {
+                        bodyLoader.setSource("LinkAccountBody0.qml", { "loginDialog": loginDialog, "root": root, "bodyLoader": bodyLoader });
+                    }
+                }
+            }
+            HifiControlsUit.Button {
+                id: loginButtonAtSignIn
+                width: d.minWidthButton
+                height: d.minHeightButton
+                text: qsTr("Log In")
+                fontFamily: signInBody.fontFamily
+                fontSize: signInBody.fontSize
+                fontBold: signInBody.fontBold
+                anchors {
+                    top: cancelContainer.top
+                    right: passwordField.right
                 }
 
-                Keys.onReturnPressed: signInBody.login()
+                onClicked: {
+                    signInBody.login()
+                }
             }
+            Item {
+                id: cantAccessContainer
+                width: parent.width
+                y: usernameField.height
+                anchors {
+                    top: cancelContainer.bottom
+                    topMargin: 3.5 * hifi.dimensions.contentSpacing.y
+                }
+                visible: false
+                HifiStylesUit.ShortcutText {
+                    id: cantAccessText
+                    z: 10
+                    anchors.centerIn: parent
+                    font.family: signInBody.fontFamily
+                    font.pixelSize: 14
+
+                    text: "<a href='https://highfidelity.com/users/password/new'> Can't access your account?</a>"
+
+                    verticalAlignment: Text.AlignVCenter
+                    horizontalAlignment: Text.AlignHCenter
+                    linkColor: hifi.colors.blueAccent
+                    onLinkActivated: loginDialog.openUrl(link)
+                }
+            }
+
         }
     }
 
-    // Row {
-    //     id: buttons
-    //     anchors {
-    //         top: mainTextContainer.bottom
-    //         horizontalCenter: parent.horizontalCenter
-    //         margins: 0
-    //         topMargin: 2 * hifi.dimensions.contentSpacing.y
-    //     }
-    //     spacing: hifi.dimensions.contentSpacing.x
-    //     onHeightChanged: d.resize(); onWidthChanged: d.resize();
-    //
-    //     Button {
-    //         anchors.verticalCenter: parent.verticalCenter
-    //
-    //         width: undefined // invalidate so that the image's size sets the width
-    //         height: undefined // invalidate so that the image's size sets the height
-    //         focus: true
-    //
-    //         background: Image {
-    //             id: buttonImage
-    //             source: "../../images/steam-sign-in.png"
-    //         }
-    //         onClicked: signInBody.login()
-    //     }
-    //     Button {
-    //         anchors.verticalCenter: parent.verticalCenter
-    //
-    //         text: qsTr("Cancel");
-    //
-    //         onClicked: signInBody.cancel()
-    //     }
-    // }
-
-    // Component.onCompleted: {
-    //     root.title = required ? qsTr("Sign In Required")
-    //                           : qsTr("Sign In")
-    //     root.iconText = ""
-    //     d.resize();
-    // }
+    Component.onCompleted: {
+        //dont rise local keyboard
+        keyboardEnabled = !root.isTablet && HMD.active;
+        //but rise Tablet's one instead for Tablet interface
+        if (root.isTablet) {
+            root.keyboardEnabled = HMD.active;
+            root.keyboardRaised = Qt.binding( function() { return keyboardRaised; })
+        }
+        d.resize();
+        print(signIn, logIn)
+        toggleSignIn(signIn, logIn)
+    }
 
     Connections {
         target: loginDialog
+        onHandleCreateFailed: {
+            console.log("Create Failed")
+        }
+        onHandleCreateCompleted: {
+            console.log("Create Completed")
+        }
+        onHandleSignupFailed: {
+            console.log("Sign Up Failed")
+            loadingSuccess(false, errorString)
+        }
+        onHandleSignupCompleted: {
+            console.log("Sign Up Completed")
+            loadingSuccess(true)
+        }
         onHandleLoginCompleted: {
             console.log("Login Succeeded")
-
-            bodyLoader.setSource("WelcomeBody.qml", { "welcomeBack" : true })
-            bodyLoader.item.width = root.pane.width
-            bodyLoader.item.height = root.pane.height
+            var poppedUp = Settings.getValue("loginDialogPoppedUp", false);
+            if (poppedUp) {
+                console.log("[ENCOURAGELOGINDIALOG]: logging in")
+                var data = {
+                    "action": "user logged in"
+                };
+                UserActivityLogger.logAction("encourageLoginDialog", data);
+                Settings.setValue("loginDialogPoppedUp", false);
+            }
+            if (loginDialog.isSteamRunning()) {
+                loginDialog.linkSteam();
+            }
+            loadingSuccess(true)
         }
         onHandleLoginFailed: {
             console.log("Login Failed")
-
-            bodyLoader.source = "CompleteProfileBody.qml"
-            if (!root.isTablet) {
-                bodyLoader.item.width = root.pane.width
-                bodyLoader.item.height = root.pane.height
+            var poppedUp = Settings.getValue("loginDialogPoppedUp", false);
+            if (poppedUp) {
+                console.log("[ENCOURAGELOGINDIALOG]: failed logging in")
+                var data = {
+                    "action": "user failed logging in"
+                };
+                UserActivityLogger.logAction("encourageLoginDialog", data);
+                Settings.setValue("loginDialogPoppedUp", false);
             }
+            loadingSuccess(false)
+        }
+        onHandleLinkCompleted: {
+            console.log("Link Succeeded")
+            loadingSuccess(true)
+        }
+        onHandleLinkFailed: {
+            console.log("Link Failed")
+            var error = "There was an unknown error while creating your account. Please try again later.";
+            loadingSuccess(false, error);
         }
     }
+
+    Keys.onPressed: {
+        if (!visible && !atSignIn) {
+            return;
+        }
+
+        switch (event.key) {
+        case Qt.Key_Enter:
+        case Qt.Key_Return:
+            event.accepted = true
+            signInBody.login()
+            break
+        }
+    }
+
 }
diff --git a/interface/resources/qml/controlsUit/Button.qml b/interface/resources/qml/controlsUit/Button.qml
index 2fd98e04a6..fd2d93d69b 100644
--- a/interface/resources/qml/controlsUit/Button.qml
+++ b/interface/resources/qml/controlsUit/Button.qml
@@ -25,6 +25,7 @@ Original.Button {
     property int radius: hifi.buttons.radius
     property alias implicitTextWidth: buttonText.implicitWidth
     property string buttonGlyph: "";
+    property int buttonGlyphRightMargin: 0;
     property int fontCapitalization: Font.AllUppercase
 
     width: hifi.dimensions.buttonWidth
@@ -91,6 +92,12 @@ Original.Button {
     }
 
     contentItem: Item {
+        id: buttonContentItem
+        TextMetrics {
+            id: buttonGlyphTextMetrics;
+            font: buttonGlyph.font;
+            text: buttonGlyph.text;
+        }
         HiFiGlyphs {
             id: buttonGlyph;
             visible: control.buttonGlyph !== "";
@@ -99,6 +106,7 @@ Original.Button {
             size: 34;
             // Anchors
             anchors.right: buttonText.left;
+            anchors.rightMargin: control.buttonGlyphRightMargin
             anchors.top: parent.top;
             anchors.bottom: parent.bottom;
             // Style
@@ -108,9 +116,16 @@ Original.Button {
             horizontalAlignment: Text.AlignHCenter;
             verticalAlignment: Text.AlignVCenter;
         }
+
+        TextMetrics {
+            id: buttonTextMetrics;
+            font: buttonText.font;
+            text: buttonText.text;
+        }
         Text {
             id: buttonText;
-            anchors.centerIn: parent;
+            width: buttonTextMetrics.width
+            anchors.verticalCenter: parent.verticalCenter;
             font.capitalization: control.fontCapitalization
             color: enabled ? hifi.buttons.textColor[control.color]
                            : hifi.buttons.disabledTextColor[control.colorScheme]
@@ -120,6 +135,13 @@ Original.Button {
             verticalAlignment: Text.AlignVCenter
             horizontalAlignment: Text.AlignHCenter
             text: control.text
+            Component.onCompleted: {
+                if (control.buttonGlyph !== "") {
+                    buttonText.x = buttonContentItem.width/2 - buttonTextMetrics.width/2 + buttonGlyphTextMetrics.width/2;
+                } else {
+                    buttonText.anchors.centerIn = parent;
+                }
+            }
         }
     }
 }
diff --git a/interface/resources/qml/stylesUit/HifiConstants.qml b/interface/resources/qml/stylesUit/HifiConstants.qml
index 595c393de9..6e00423639 100644
--- a/interface/resources/qml/stylesUit/HifiConstants.qml
+++ b/interface/resources/qml/stylesUit/HifiConstants.qml
@@ -349,5 +349,6 @@ QtObject {
         readonly property string update: "\ue032"
         readonly property string uninstall: "\ue033"
         readonly property string verticalEllipsis: "\ue034"
+        readonly property string steamSquare: "\ue035"
     }
 }