diff --git a/app/lib/God.coffee b/app/lib/God.coffee
index 224208f4c..27857224c 100644
--- a/app/lib/God.coffee
+++ b/app/lib/God.coffee
@@ -192,7 +192,7 @@ class Angel
     @worker.postMessage {func: 'abort'}
 
   terminate: =>
-    @worker.terminate()
+    @worker?.terminate()
     @worker = null
     return if @dead
     @free()
diff --git a/app/templates/play/level/modal/multiplayer.jade b/app/templates/play/level/modal/multiplayer.jade
index 7b3b82ea5..99d37016f 100644
--- a/app/templates/play/level/modal/multiplayer.jade
+++ b/app/templates/play/level/modal/multiplayer.jade
@@ -24,6 +24,12 @@
         span(data-i18n="play_level.multiplayer_hint")  Click the link to select all, then press ⌘-C or Ctrl-C to copy the link.
     
       p(data-i18n="play_level.multiplayer_coming_soon") More multiplayer features to come!
+
+    if playableTeams.length > 1
+      #multiplayer-team-selection
+        for team in playableTeams
+          label(for="multiplayer_team_"+team)= team
+          input(id="multiplayer_team_"+team, type="radio", name="multiplayer", value=team)
   
   .modal-footer
     a(href='#', data-dismiss="modal", aria-hidden="true", data-i18n="modal.close").btn.btn-primary Close
diff --git a/app/views/play/level/control_bar_view.coffee b/app/views/play/level/control_bar_view.coffee
index 11ad90ef2..df8d9f19f 100644
--- a/app/views/play/level/control_bar_view.coffee
+++ b/app/views/play/level/control_bar_view.coffee
@@ -31,6 +31,7 @@ module.exports = class ControlBarView extends View
     @worldName = options.worldName
     @session = options.session
     @level = options.level
+    @playableTeams = options.playableTeams
     super options
 
   setBus: (@bus) ->
@@ -55,7 +56,7 @@ module.exports = class ControlBarView extends View
     @openModalView(new DocsModal(options))
 
   showMultiplayerModal: ->
-    @openModalView(new MultiplayerModal(session: @session))
+    @openModalView(new MultiplayerModal(session: @session, playableTeams: @playableTeams))
 
   showRestartModal: ->
     @openModalView(new ReloadModal())
diff --git a/app/views/play/level/modal/multiplayer_modal.coffee b/app/views/play/level/modal/multiplayer_modal.coffee
index db3c30596..fcf0819dc 100644
--- a/app/views/play/level/modal/multiplayer_modal.coffee
+++ b/app/views/play/level/modal/multiplayer_modal.coffee
@@ -1,5 +1,6 @@
 View = require 'views/kinds/ModalView'
 template = require 'templates/play/level/modal/multiplayer'
+{me} = require('lib/auth')
 
 module.exports = class MultiplayerModal extends View
   id: 'level-multiplayer-modal'
@@ -13,6 +14,7 @@ module.exports = class MultiplayerModal extends View
     super(options)
     @session = options.session
     @session.on 'change:multiplayer', @updateLinkSection
+    @playableTeams = options.playableTeams
 
   getRenderData: ->
     c = super()
@@ -20,13 +22,17 @@ module.exports = class MultiplayerModal extends View
       '?session=' +
       @session.id)
     c.multiplayer = @session.get('multiplayer')
+    c.playableTeams = @playableTeams
     c
 
   afterRender: ->
     super()
     @updateLinkSection()
+    @$el.find('#multiplayer-team-selection input')
+      .prop('checked', -> $(@).val() is me.team)
+      .bind('change', -> Backbone.Mediator.publish 'level:set-team', team: $(@).val())
 
-  onClickLink: (e) =>
+  onClickLink: (e) ->
     e.target.select()
 
   updateLinkSection: =>
diff --git a/app/views/play/level_view.coffee b/app/views/play/level_view.coffee
index 109ee0680..9e567eccc 100644
--- a/app/views/play/level_view.coffee
+++ b/app/views/play/level_view.coffee
@@ -52,12 +52,12 @@ module.exports = class PlayLevelView extends View
     'level-enable-controls': 'onEnableControls'
     'god:new-world-created': 'onNewWorld'
     'god:infinite-loop': 'onInfiniteLoop'
-    'bus:connected': 'onBusConnected'
     'level-reload-from-data': 'onLevelReloadFromData'
     'play-next-level': 'onPlayNextLevel'
     'edit-wizard-settings': 'showWizardSettingsModal'
     'surface:world-set-up': 'onSurfaceSetUpNewWorld'
     'level:session-will-save': 'onSessionWillSave'
+    'level:set-team': 'setTeam'
 
   events:
     'click #level-done-button': 'onDonePressed'
@@ -123,7 +123,7 @@ module.exports = class PlayLevelView extends View
     @levelLoader.destroy()
     @levelLoader = null
     @loadingScreen.destroy()
-    @setTeam @world.teamForPlayer 1  # We don't know which player we are; this will go away--temp TODO
+    @setTeam @world.teamForPlayer _.size @session.get 'players'   # TODO: players aren't initialized yet?
     @initSurface()
     @initGod()
     @initGoalManager()
@@ -157,7 +157,7 @@ module.exports = class PlayLevelView extends View
     @insertSubView new HUDView {}
     @insertSubView new ChatView levelID: @levelID, sessionID: @session.id, session: @session
     worldName = @level.get('i18n')?[me.lang()]?.name ? @level.get('name')
-    @controlBar = @insertSubView new ControlBarView {worldName: worldName, session: @session, level: @level, supermodel: @supermodel}
+    @controlBar = @insertSubView new ControlBarView {worldName: worldName, session: @session, level: @level, supermodel: @supermodel, playableTeams: @world.playableTeams}
     #Backbone.Mediator.publish('level-set-debug', debug: true) if me.displayName() is 'Nick!'
 
   afterInsert: ->
@@ -360,13 +360,6 @@ module.exports = class PlayLevelView extends View
     @bus.setSession(@session)
     @bus.connect() if @session.get('multiplayer')
 
-  onBusConnected: ->
-    # Need to set this team stuff before the Tome loads... let's think about this with Scott.
-    #@setTeam @world.teamForPlayer(@bus.countPlayers()) unless me.team
-    #$('#multiplayer-team-selection').toggle(@world.playableTeams.length > 1)
-    #  .find('input').prop('checked', -> $(@).val() is me.team)
-    #  .bind('change', @setTeam)
-
   onSessionWillSave: (e) ->
     # Something interesting has happened, so (at a lower frequency), we'll save a screenshot.
     @saveScreenshot e.session
@@ -377,7 +370,8 @@ module.exports = class PlayLevelView extends View
     session.save {screenshot: screenshot}, {patch: true}
 
   setTeam: (team) ->
-    team = $(@).val() unless _.isString team
+    team = team?.team unless _.isString team
+    team ?= 'humans'
     me.team = team
     Backbone.Mediator.publish 'level:team-set', team: team