     'change #option-code-language': 'onCodeLanguageChanged'
 
   shortcuts:
-    'left': -> @$el.find('#hero-carousel').carousel('prev') unless @$el.hasClass 'secret'
-    'right': -> @$el.find('#hero-carousel').carousel('next') unless @$el.hasClass 'secret'
+    'left': -> @$el.find('#hero-carousel').carousel('prev') if @heroes.models.length and not @$el.hasClass 'secret'
+    'right': -> @$el.find('#hero-carousel').carousel('next') if @heroes.models.length and not @$el.hasClass 'secret'
 
   constructor: (options) ->
     super options

      movieClip.x = canvas.prop('width') * 0.5
      movieClip.y = canvas.prop('height') * 0.925  # This is where the feet go.
      stage = new createjs.Stage(canvas[0])
      stage.addChild movieClip
      stage.update()
      createjs.Ticker.addEventListener 'tick', stage
      movieClip.gotoAndPlay 0
      @stages[heroIndex] = stage
      @playSelectionSound hero
    if fullHero.loaded
      _.defer onLoaded
    else

    heroInfo = temporaryHeroInfo[hero.get('slug')]
    locked = heroInfo.status is 'Locked'
    hero = @loadHero hero, heroIndex
    @preloadHero heroIndex + 1
    @preloadHero heroIndex - 1
    @selectedHero = hero unless locked
    Backbone.Mediator.publish 'level:hero-selection-updated', hero: @selectedHero
    $('#choose-inventory-button').prop 'disabled', locked

  getFullHero: (original) ->
    url = "/db/thang.type/#{original}/version"
    if fullHero = @supermodel.getModel url
      return fullHero
    fullHero = new ThangType()
    fullHero.setURL url
    fullHero = (@supermodel.loadModel fullHero, 'thang').model
    fullHero

  preloadHero: (heroIndex) ->
    return unless hero = @heroes.models[heroIndex]
    @loadHero hero, heroIndex, true

  loadHero: (hero, heroIndex, preloading=false) ->
    createjs.Ticker.removeEventListener 'tick', stage for stage in _.values @stages
    if stage = @stages[heroIndex]
      unless preloading
        _.defer -> createjs.Ticker.addEventListener 'tick', stage  # Deferred, otherwise it won't start updating for some reason.
        @playSelectionSound hero
      return hero
    fullHero = @getFullHero hero.get 'original'
    onLoaded = =>
      return unless canvas = $(".hero-item[data-hero-id='#{fullHero.get('original')}'] canvas")
      canvas.prop width: @canvasWidth, height: @canvasHeight
