diff --git a/src/react-components/ui-root.js b/src/react-components/ui-root.js
index 447f6aceab639c591271d553f81de61e7c97be6e..08d076d04cd53cbc4775d870dfc134ae0b5ab019 100644
--- a/src/react-components/ui-root.js
+++ b/src/react-components/ui-root.js
@@ -8,7 +8,6 @@ const ENTRY_STEPS = {
   mic_grant: "mic_grant",
   mic_granted: "mic_granted",
   audio_setup: "audio_setup",
-  name_entry: "name_entry",
   finished: "finished"
 }
 
@@ -298,14 +297,13 @@ class UIRoot extends Component {
     }
 
     this.stopTestTone();
-    this.setState({ entryStep: ENTRY_STEPS.name_entry });
+    this.props.enterScene(this.state.mediaStream);
+    this.setState({ entryStep: ENTRY_STEPS.finished });
   }
 
   saveName = (e) => {
     e.preventDefault();
     this.props.store.update({ profile: { display_name: this.nameInput.value } });
-    this.props.enterScene(this.state.mediaStream);
-    this.setState({ entryStep: ENTRY_STEPS.finished });
   }
 
   render() {
@@ -349,30 +347,31 @@ class UIRoot extends Component {
         </div>
       ) : null;
 
-    const nameEntryPanel = this.state.entryStep === ENTRY_STEPS.name_entry
-    ? (
-        <div>
-          Name Entry
-          <form onSubmit={this.saveName}>
-            <label>Name:
-              <input
-                defaultValue={this.props.store.state.profile.display_name}
-                required pattern={SCHEMA.definitions.profile.properties.display_name.pattern}
-                title="Alphanumerics and hyphens. At least 3 characters, no more than 32"
-                ref={inp => this.nameInput = inp}/>
-            </label>
-            <input type="submit" value="Save" />
-          </form>
-        </div>
-      ) : null;
+    const nameEntryPanel = (
+      <div>
+        Name Entry
+        <form onSubmit={this.saveName}>
+          <label>Name:
+            <input
+              defaultValue={this.props.store.state.profile.display_name}
+              required pattern={SCHEMA.definitions.profile.properties.display_name.pattern}
+              title="Alphanumerics and hyphens. At least 3 characters, no more than 32"
+              ref={inp => this.nameInput = inp}/>
+          </label>
+          <input type="submit" value="Save" />
+        </form>
+      </div>
+    );
 
     const overlay = this.isWaitingForAutoExit() ?
       (<AutoExitWarning secondsRemaining={this.state.secondsRemainingBeforeAutoExit} onCancel={this.endAutoExitTimer} />) :
-      (<div>
-        {entryPanel}
-        {micPanel}
-        {audioSetupPanel}
-        {nameEntryPanel}
+      (
+        <div>
+          {entryPanel}
+          {micPanel}
+          {audioSetupPanel}
+
+          {nameEntryPanel}
         </div>
       );
 
diff --git a/src/room.css b/src/room.css
index b74a6c28f48547c09097cfc5b5d9b96119bb1ab9..d98df797ef70bcb1d09f98d5447d7196d4dfedd4 100644
--- a/src/room.css
+++ b/src/room.css
@@ -19,3 +19,8 @@
   left: 0;
   position: absolute;
 }
+
+.rs-base {
+  top: auto;
+  bottom: 20px;
+}
diff --git a/src/room.js b/src/room.js
index a463ddbdb5338f3a143d84db4fc9583642c72075..bfb62d17040a6ee92c4fade4503a7dde19ac77db 100644
--- a/src/room.js
+++ b/src/room.js
@@ -121,6 +121,11 @@ async function exitScene() {
   document.body.removeChild(scene);
 }
 
+function setNameTagFromStore() {
+  const myNametag = document.querySelector("#player-rig .nametag");
+  myNametag.setAttribute("text", "value", store.state.profile.display_name);
+}
+
 async function enterScene(mediaStream) {
   const qs = queryString.parse(location.search);
   const scene = document.querySelector("a-scene");
@@ -139,8 +144,8 @@ async function enterScene(mediaStream) {
     playerRig.setAttribute("virtual-gamepad-controls", {});
   }
 
-  const myNametag = document.querySelector("#player-rig .nametag");
-  myNametag.setAttribute("text", "value", store.state.profile.display_name);
+  setNameTagFromStore();
+  store.subscribe(setNameTagFromStore);
 
   const avatarScale = parseInt(qs.avatarScale, 10);