         @xhr
           .put @routes.api.songs.id.url(id: payload.song.id), payload.json
           .then => @userStore.setSongPublisher payload.song
+      when Store.Actions.SEARCH
+        @xhr
+          .get @routes.api.songs.search.url null, query: payload.query
+          .then (songs) =>
+            @fromJson foundSongs: songs
+            @notify()
       when Store.Actions.UNPUBLISH_SONG
         @xhr
           .delete @routes.api.songs.id.url(id: payload.song.id)

      song: song
      json: publishedSong.toJson()

  createPublishedSong_: (song) ->
    json = song.toJson()
    json.publisher = @userStore.user.uid

  constructor: (@dispatcher, @routes, @xhr, @userStore) ->
    super 'songs'

    ###*
      @type {Array.<app.songs.Song>}
    ###
    @recentlyUpdatedSongs = []

    ###*
      @type {Array.<app.songs.Song>}
    ###
    @songsByUrl = []

    ###*
      @type {Array.<app.songs.Song>}
    ###
    @foundSongs = []

    @dispatcherIndex = @dispatcher.register @handleAction_.bind @

  @Actions:
    PUBLISH_SONG: 'publishsong'
    SEARCH: 'searchsongs'
    UNPUBLISH_SONG: 'unpublishsong'

  handleAction_: (action, payload) ->
    switch action
