diff --git a/app/lib/LevelSetupManager.coffee b/app/lib/LevelSetupManager.coffee
index 42abe2beb..0b852ecc3 100644
--- a/app/lib/LevelSetupManager.coffee
+++ b/app/lib/LevelSetupManager.coffee
@@ -15,7 +15,8 @@ module.exports = class LevelSetupManager extends CocoClass
     super()
     @supermodel = @options.supermodel ? new SuperModel()
     @session = @options.session
-    @loadLevel()
+    unless @level = @options.level
+      @loadLevel()
     if @session
       @fillSessionWithDefaults()
     else
diff --git a/app/views/play/level/ControlBarView.coffee b/app/views/play/level/ControlBarView.coffee
index 2b8d07c94..c289bf30b 100644
--- a/app/views/play/level/ControlBarView.coffee
+++ b/app/views/play/level/ControlBarView.coffee
@@ -97,12 +97,12 @@ module.exports = class ControlBarView extends CocoView
     c.homeLink = @homeLink
     c
 
-  showGameMenuModal: ->
-    gameMenuModal = new GameMenuModal level: @level, session: @session, supermodel: @supermodel
+  showGameMenuModal: (tab='guide') ->
+    gameMenuModal = new GameMenuModal level: @level, session: @session, supermodel: @supermodel, showTab: tab
     @openModalView gameMenuModal
     @listenToOnce gameMenuModal, 'change-hero', ->
       @setupManager?.destroy()
-      @setupManager = new LevelSetupManager({supermodel: @supermodel, levelID: @levelID, parent: @, session: @session})
+      @setupManager = new LevelSetupManager({supermodel: @supermodel, level: @level, levelID: @levelID, parent: @, session: @session})
       @setupManager.open()
 
   onClickHome: (e) ->
@@ -111,7 +111,7 @@ module.exports = class ControlBarView extends CocoView
     Backbone.Mediator.publish 'router:navigate', route: @homeLink, viewClass: @homeViewClass, viewArgs: @homeViewArgs
 
   onClickMultiplayer: (e) ->
-    @openModalView new GameMenuModal showTab: 'multiplayer', level: @level, session: @session, supermodel: @supermodel
+    @showGameMenuModal 'multiplayer'
 
   onClickSignupButton: ->
     window.tracker?.trackEvent 'Started Signup', category: 'Play Level', label: 'Control Bar', level: @levelID
diff --git a/app/views/play/level/PlayLevelView.coffee b/app/views/play/level/PlayLevelView.coffee
index 64cdf9b49..69e866845 100644
--- a/app/views/play/level/PlayLevelView.coffee
+++ b/app/views/play/level/PlayLevelView.coffee
@@ -279,7 +279,7 @@ module.exports = class PlayLevelView extends RootView
       e.session.set 'heroConfig', {"thangType":sorcerer,"inventory":{"misc-0":"53e2396a53457600003e3f0f","programming-book":"546e266e9df4a17d0d449be5","minion":"54eb5dbc49fa2d5c905ddf56","feet":"53e214f153457600003e3eab","right-hand":"54eab7f52b7506e891ca7202","left-hand":"5463758f3839c6e02811d30f","wrists":"54693797a2b1f53ce79443e9","gloves":"5469425ca2b1f53ce7944421","torso":"546d4a549df4a17d0d449a97","neck":"54693274a2b1f53ce79443c9","eyes":"546941fda2b1f53ce794441d","head":"546d4ca19df4a17d0d449abf"}}
     else if e.level.get('type', true) in ['hero', 'hero-ladder', 'hero-coop'] and not _.size e.session.get('heroConfig')?.inventory ? {}
       @setupManager?.destroy()
-      @setupManager = new LevelSetupManager({supermodel: @supermodel, levelID: @levelID, parent: @, session: @session})
+      @setupManager = new LevelSetupManager({supermodel: @supermodel, level: @level, levelID: @levelID, parent: @, session: @session})
       @setupManager.open()
 
     @onRealTimeMultiplayerLevelLoaded e.session if e.level.get('type') in ['hero-ladder', 'course-ladder']
@@ -577,7 +577,7 @@ module.exports = class PlayLevelView extends RootView
     if slot and not inventory[slot]
       # Open up the inventory modal so they can equip the new item
       @setupManager?.destroy()
-      @setupManager = new LevelSetupManager({supermodel: @supermodel, levelID: @levelID, parent: @, session: @session, hadEverChosenHero: true})
+      @setupManager = new LevelSetupManager({supermodel: @supermodel, level: @level, levelID: @levelID, parent: @, session: @session, hadEverChosenHero: true})
       @setupManager.open()
 
   # Start Real-time Multiplayer ######################################################
diff --git a/app/views/play/level/tome/SpellPaletteView.coffee b/app/views/play/level/tome/SpellPaletteView.coffee
index 5e0afd74b..a0d5138c8 100644
--- a/app/views/play/level/tome/SpellPaletteView.coffee
+++ b/app/views/play/level/tome/SpellPaletteView.coffee
@@ -6,6 +6,7 @@ SpellPaletteEntryView = require './SpellPaletteEntryView'
 LevelComponent = require 'models/LevelComponent'
 ThangType = require 'models/ThangType'
 GameMenuModal = require 'views/play/menu/GameMenuModal'
+LevelSetupManager = require 'lib/LevelSetupManager'
 
 N_ROWS = 4
 
@@ -319,10 +320,16 @@ module.exports = class SpellPaletteView extends CocoView
 
   onClickHelp: (e) ->
     application.tracker?.trackEvent 'Spell palette help clicked', levelID: @level.get('slug')
-    @openModalView new GameMenuModal showTab: 'guide', level: @level, session: @session, supermodel: @supermodel
+    gameMenuModal = new GameMenuModal showTab: 'guide', level: @level, session: @session, supermodel: @supermodel
+    @openModalView gameMenuModal
+    @listenToOnce gameMenuModal, 'change-hero', ->
+      @setupManager?.destroy()
+      @setupManager = new LevelSetupManager({supermodel: @supermodel, level: @level, levelID: @level.get('slug'), parent: @, session: @session})
+      @setupManager.open()
 
   destroy: ->
     entry.destroy() for entry in @entries
     @toggleBackground = null
     $(window).off 'resize', @onResize
+    @setupManager?.destroy()
     super()