     @param {Object} serverSong
   ###
   mergeSong: (localSong, serverSong) ->
-    # localSong.name = serverSong.name
-    # localSong.artist = serverSong.artist
-    # localSong.lyrics = serverSong.lyrics
+    localSong.name = serverSong.name
+    localSong.artist = serverSong.artist
+    localSong.lyrics = serverSong.lyrics
 
   ###*
     PATTERN(steida): Logout deletes all user data in memory and in local storage,

    localUserStoreJson = @toJson()
    @mergeSongs localUserStoreJson, serverUserStoreJson
    @fromJson localUserStoreJson
    console.log 'updateFromServer notify'
    @notify()

  ###*
    @param {Object} localUserStoreJson
    @param {Object} serverUserStoreJson
  ###
  mergeSongs: (localUserStoreJson, serverUserStoreJson) ->
    # serverUserStoreJson can be null.
    return if !serverUserStoreJson
    serverSongs = serverUserStoreJson.songs
    return if !serverSongs
    for id, serverSong of serverSongs
      localSong = localUserStoreJson.songs[id]
      if !localSong
        localUserStoreJson.songs[id] = serverSong
        continue
      @mergeSong localSong, serverSong
    return

    @override
  ###
  toJson: ->
    # created: @created
    newSong: @newSong
    songs: @asObject @songs
    # updated: @updated
    user: @getJsonUser @user

  ###*
    @override
  ###
  fromJson: (json) ->
    # @created = json.created
    @newSong = @instanceFromJson app.songs.Song, json.newSong
    # NOTE(steida): '|| []'' because JSON stringify and parse ignores empty array.
    @songs = @asArray(json.songs || []).map @instanceFromJson app.songs.Song
    @user = @getJsonUser json.user
    # @updated = json.updated

  # PATTERN(steida): Use only server unique props, because user is going to be
  # saved into localStorage, which is shared across browser tabs/windows.
