diff --git a/app/views/game-menu/GameMenuModal.coffee b/app/views/game-menu/GameMenuModal.coffee
index 514f1e486..6d64d44e8 100644
--- a/app/views/game-menu/GameMenuModal.coffee
+++ b/app/views/game-menu/GameMenuModal.coffee
@@ -23,6 +23,7 @@ module.exports = class GameMenuModal extends ModalView
     @options.showDevBits = me.isAdmin() or /https?:\/\/localhost/.test(window.location.href)
     @options.showInventory = @options.level.get('type', true) is 'hero'
     @options.levelID = @options.level.get('slug')
+    @options.startingSessionHeroConfig = $.extend {}, true, (@options.session.get('heroConfig') ? {})
 
   getRenderData: (context={}) ->
     context = super(context)
@@ -51,7 +52,7 @@ module.exports = class GameMenuModal extends ModalView
     Backbone.Mediator.publish 'audio-player:play-sound', trigger: 'game-menu-close', volume: 1
 
   updateConfig: ->
-    sessionHeroConfig = $.extend {}, true, (@options.session.get('heroConfig') ? {})
+    sessionHeroConfig = @options.startingSessionHeroConfig
     lastHeroConfig = me.get('heroConfig') ? {}
     thangType = @subviews.choose_hero_view.selectedHero?.get 'original'
     inventory = @subviews.inventory_view.getCurrentEquipmentConfig()
diff --git a/app/views/play/level/LevelHUDView.coffee b/app/views/play/level/LevelHUDView.coffee
index aac9d209a..9dccd86b2 100644
--- a/app/views/play/level/LevelHUDView.coffee
+++ b/app/views/play/level/LevelHUDView.coffee
@@ -199,7 +199,11 @@ module.exports = class LevelHUDView extends CocoView
         group.append('<span class="hud-hint">' + sk + '</span>')
       group.append($('<button class="btn btn-small banner with-dot">' + s + ' <div class="dot"></div></button>'))
       @lastResponses = null
-    @bubble.append($("<h3>#{@speaker ? 'Captain Anya'}</h3>"))
+    if @speaker is 'Hero Placeholder'
+      name = {knight: 'Tharin', captain: 'Anya'}[@speakerSprite?.thang?.id] ? 'Hero'
+    else
+      name = @speaker
+    @bubble.append($("<h3>#{name}</h3>"))
     @animator = new DialogueAnimator(message, @bubble)
     @messageInterval = setInterval(@addMoreMessage, 1000 / 30)  # 30 FPS
 
diff --git a/app/views/play/level/PlayLevelView.coffee b/app/views/play/level/PlayLevelView.coffee
index 891cc4862..8bce360df 100644
--- a/app/views/play/level/PlayLevelView.coffee
+++ b/app/views/play/level/PlayLevelView.coffee
@@ -369,16 +369,19 @@ module.exports = class PlayLevelView extends RootView
     return if @alreadyLoadedState
     @alreadyLoadedState = true
     state = @originalSessionState
-    if state.frame and @level.get('type', true) isnt 'ladder'  # https://github.com/codecombat/codecombat/issues/714
-      Backbone.Mediator.publish 'level:set-time', time: 0, frameOffset: state.frame
     if @level.get('type', true) is 'hero'
       Backbone.Mediator.publish 'tome:select-primary-sprite', {}
       @surface.focusOnHero()
-    else if state.selected
-      # TODO: Should also restore selected spell here by saving spellName
-      Backbone.Mediator.publish 'level:select-sprite', thangID: state.selected, spellName: null
-    if state.playing?
-      Backbone.Mediator.publish 'level:set-playing', playing: state.playing
+      Backbone.Mediator.publish 'level:set-time', time: 0
+      Backbone.Mediator.publish 'level:set-playing', playing: true
+    else
+      if state.frame and @level.get('type', true) isnt 'ladder'  # https://github.com/codecombat/codecombat/issues/714
+        Backbone.Mediator.publish 'level:set-time', time: 0, frameOffset: state.frame
+      if state.selected
+        # TODO: Should also restore selected spell here by saving spellName
+        Backbone.Mediator.publish 'level:select-sprite', thangID: state.selected, spellName: null
+      if state.playing?
+        Backbone.Mediator.publish 'level:set-playing', playing: state.playing
 
   # callbacks