diff --git a/app/locale/en.coffee b/app/locale/en.coffee
index 3582654a7..a74e53f5d 100644
--- a/app/locale/en.coffee
+++ b/app/locale/en.coffee
@@ -314,7 +314,7 @@
     restricted: "(restricted in this level)"
     equip: "Equip"
     unequip: "Unequip"
-    
+
   buy_gems:
     few_gems: 'A few gems'
     pile_gems: 'Pile of gems'
@@ -324,6 +324,8 @@
     choose_hero: "Choose Your Hero"
     programming_language: "Programming Language"
     programming_language_description: "Which programming language do you want to use?"
+    default: "Default"
+    experimental: "Experimental"
     python_blurb: "Simple yet powerful, great for beginners and experts."
     javascript_blurb: "The language of the web. (Not the same as Java.)"
     coffeescript_blurb: "Nicer JavaScript syntax."
diff --git a/app/models/ThangType.coffee b/app/models/ThangType.coffee
index 0f7f57abd..0b73b4d99 100644
--- a/app/models/ThangType.coffee
+++ b/app/models/ThangType.coffee
@@ -260,7 +260,7 @@ module.exports = class ThangType extends CocoModel
       createjs.Ticker.removeEventListener 'tick', @tick
       @tick = null
     stage
-    
+
   getVectorPortraitStage: (size=100) ->
     return unless @actions
     canvas = $("<canvas width='#{size}' height='#{size}'></canvas>")
@@ -336,10 +336,12 @@ module.exports = class ThangType extends CocoModel
       return console.warn @get('name'), 'is not an equipping hero, but you are asking for its hero stats. (Did you project away components?)'
     unless movesConfig = _.find(components, original: LevelComponent.MovesID)?.config
       return console.warn @get('name'), 'is not a moving hero, but you are asking for its hero stats.'
+    unless programmableConfig = _.find(components, original: LevelComponent.ProgrammableID)?.config
+      return console.warn @get('name'), 'is not a Programmable hero, but you are asking for its hero stats.'
     @classStatAverages ?=
       attack: {Warrior: 7.5, Ranger: 5, Wizard: 2.5}
       health: {Warrior: 7.5, Ranger: 5, Wizard: 3.5}
-    stats = {skills: []}  # TODO: find skills
+    stats = {}
     rawNumbers = attack: equipsConfig.attackDamageFactor ? 1, health: equipsConfig.maxHealthFactor ? 1, speed: movesConfig.maxSpeed
     for prop in ['attack', 'health']
       stat = rawNumbers[prop]
@@ -349,11 +351,15 @@ module.exports = class ThangType extends CocoModel
         classSpecificScore = stat * 5
       classAverage = @classStatAverages[prop][@get('heroClass')]
       stats[prop] = Math.round(2 * ((classAverage - 2.5) + classSpecificScore / 2)) / 2 / 10
+
     minSpeed = 4
     maxSpeed = 16
     speedRange = maxSpeed - minSpeed
     speedPoints = rawNumbers.speed - minSpeed
     stats.speed = Math.round(20 * speedPoints / speedRange) / 2 / 10
+
+    stats.skills = (_.string.titleize(_.string.humanize(skill)) for skill in programmableConfig.programmableProperties when skill isnt 'say')
+
     stats
 
   getFrontFacingStats: ->
diff --git a/app/templates/play/modal/play-heroes-modal.jade b/app/templates/play/modal/play-heroes-modal.jade
index 6b8e8dee6..7de87994b 100644
--- a/app/templates/play/modal/play-heroes-modal.jade
+++ b/app/templates/play/modal/play-heroes-modal.jade
@@ -12,7 +12,7 @@
       .carousel-indicator-container
         ol.carousel-indicators
           for hero, index in heroes
-            li(data-hero-id=hero.get('original'), title=hero.get('name'), data-slide-to=index, data-target="#hero-carousel", class="hero-indicator hero-index-" + index + (hero.locked ? " locked" : ""))
+            li(data-hero-id=hero.get('original'), title=hero.name, data-slide-to=index, data-target="#hero-carousel", class="hero-indicator hero-index-" + index + (hero.locked ? " locked" : ""))
               .hero-avatar
               if hero.locked
                 img.lock-indicator(src="/images/pages/game-menu/lock.png")
diff --git a/app/views/game-menu/InventoryModal.coffee b/app/views/game-menu/InventoryModal.coffee
index 69865e442..8036dd8c1 100644
--- a/app/views/game-menu/InventoryModal.coffee
+++ b/app/views/game-menu/InventoryModal.coffee
@@ -83,7 +83,7 @@ module.exports = class InventoryModal extends ModalView
 
     # sort into one of the four groups
     locked = not (item.get('original') in me.items())
-    locked = false if me.get('slug') is 'nick'
+    #locked = false if me.get('slug') is 'nick'
 
     if locked and item.get('slug') isnt 'simple-boots'
       @itemGroups.lockedItems.add(item)
diff --git a/app/views/play/modal/PlayHeroesModal.coffee b/app/views/play/modal/PlayHeroesModal.coffee
index 88a78ecbd..b126c4e0e 100644
--- a/app/views/play/modal/PlayHeroesModal.coffee
+++ b/app/views/play/modal/PlayHeroesModal.coffee
@@ -28,7 +28,7 @@ module.exports = class PlayHeroesModal extends ModalView
     @confirmButtonI18N = options.confirmButtonI18N ? "common.save"
     @heroes = new CocoCollection([], {model: ThangType})
     @heroes.url = '/db/thang.type?view=heroes'
-    @heroes.setProjection ['original','name','slug','soundTriggers','featureImage','gems','heroClass','description','components','extendedName']
+    @heroes.setProjection ['original','name','slug','soundTriggers','featureImage','gems','heroClass','description','components','extendedName','i18n']
     @heroes.comparator = 'gems'
     @listenToOnce @heroes, 'sync', @onHeroesLoaded
     @supermodel.loadCollection(@heroes, 'heroes')
@@ -75,7 +75,7 @@ module.exports = class PlayHeroesModal extends ModalView
 
   initCodeLanguageList: (hadEverChosenHero) ->
     @codeLanguageList = [
-      {id: 'python', name: 'Python (Default)'}
+      {id: 'python', name: "Python (#{$.i18n.t('choose_hero.default')})"}
       {id: 'javascript', name: 'JavaScript'}
       {id: 'coffeescript', name: 'CoffeeScript'}
     ]
@@ -86,9 +86,9 @@ module.exports = class PlayHeroesModal extends ModalView
     # Group 1 isn't shown experimental languages in hero modal when launching beginner campaign level
     testGroup = me.getExperimentalLangGroup()
     if hadEverChosenHero? or testGroup isnt 1
-      @codeLanguageList.push id: 'clojure', name: 'Clojure (Experimental)'
-      @codeLanguageList.push id: 'lua', name: 'Lua (Experimental)'
-      @codeLanguageList.push id: 'io', name: 'Io (Experimental)'
+      @codeLanguageList.push id: 'clojure', name: "Clojure (#{$.i18n.t('choose_hero.experimental')})"
+      @codeLanguageList.push id: 'lua', name: "Lua (#{$.i18n.t('choose_hero.experimental')})"
+      @codeLanguageList.push id: 'io', name: "Io (#{$.i18n.t('choose_hero.experimental')})"
     unless hadEverChosenHero? or testGroup is -1
       window.tracker?.trackEvent 'Heroes Modal', experimentalLangGroup: testGroup