         [newThang, newSpell] = newSpellKey.split '/'
         if newSpell is oldSpell
           # Found spell location under new team
-          console.log "Swapping spell=#{oldSpell} from #{oldThang} to #{newThang}"
+          # console.log "Swapping spell=#{oldSpell} from #{oldThang} to #{newThang}"
           if code[newThang]?[oldSpell]?
             # Option 1: have a new spell to swap
             code[oldThang][oldSpell] = code[newThang][oldSpell]

    data = snapshot.val()
    if data? and data.id isnt me.id
      @realTimeOpponentData = data
      console.log 'PlayLevelView onRealTimePlayerAdded opponent', @realTimeOpponentData, @realTimePlayersData
      @realTimePlayersData[@realTimeOpponentData.id] = @realTimeOpponentData
      if @realTimeSessionData?.state is 'creating'
        @realTimeSessionRef.update 'state': 'coding'

        transpiledCode[thang][spellID] = aether.transpile spell
    # console.log "PlayLevelView transpiled code", transpiledCode
    @session.set 'transpiledCode', transpiledCode
    permissions = @session.get 'permissions' ? []
    unless _.find(permissions, (p) -> p.target is 'public' and p.access is 'read')
      permissions.push target:'public', access:'read'
      @session.set 'permissions', permissions
    @session.patch()
    @realTimePlayerGameRef.update 'state': 'submitted'

    console.info 'Other player is', @realTimeOpponentData.state
    if @realTimeOpponentData.state in ['submitted', 'ready']
      @realTimeOpponentSubmittedCode @realTimeOpponentData, @realTimePlayerGameData
