     super options, data
 
     @kiteController = @getSingleton('kiteController')
+    @appStorage     = @getSingleton('mainController').getAppStorageSingleton 'Finder', '1.0'
 
     @treeController = new NFinderTreeController treeOptions, []
     @treeController.on "file.opened", (file)=> @setRecentFile file.path

    return unless KD.isLoggedIn()
    {nickname}     = KD.whoami().profile
    kiteController = KD.getSingleton('kiteController')
    @fetchStorage (storage)=>
      recentFolders = if storage.bucket?.recentFolders? and storage.bucket.recentFolders.length > 0
        storage.bucket.recentFolders
      else
        [
          "/Users/#{nickname}"
          "/Users/#{nickname}/Sites"
          "/Users/#{nickname}/Sites/#{nickname}.koding.com"
          "/Users/#{nickname}/Sites/#{nickname}.koding.com/website"
        ]

      timer = Date.now()
      # @utils.wait =>
      # mount = @treeController.nodes["/Users/#{nickname}"].getData()

      @mount.emit "fs.fetchContents.started"

      @utils.killWait kiteFailureTimer if kiteFailureTimer
      kiteFailureTimer = @utils.wait 5000, =>
        @treeController.notify "Couldn't fetch files! Click to retry", 'clickable', "Sorry, a problem occured while communicating with servers, please try again later.", yes
        @mount.emit "fs.fetchContents.finished"

        kiteController.emit "UserEnvironmentIsCreated"
        @mount.emit "fs.fetchContents.finished"

  multipleLs:(pathArray, callback)->

    KD.getSingleton('kiteController').run
      withArgs  :
        command : "ls \"#{pathArray.join("\" \"")}\" -Llpva --group-directories-first --time-style=full-iso"
    , callback

  setRecentFile:(filePath, callback)->

    recentFiles = @appStorage.getValue('recentFiles')
    recentFiles = [] unless Array.isArray recentFiles

    unless filePath in recentFiles
      recentFiles.pop() if recentFiles.length is @treeController.getOptions().maxRecentFiles
      recentFiles.unshift filePath

    @appStorage.setValue 'recentFiles', recentFiles.slice(0,10), =>
      @emit 'recentfiles.updated', recentFiles

  setRecentFolder:(folderPath, callback)->

    recentFolders = @appStorage.getValue('recentFolders')
    recentFolders = [] unless Array.isArray recentFolders

    unless folderPath in recentFolders
      recentFolders.push folderPath

    recentFolders.sort (path)-> if path is folderPath then -1 else 0

    @appStorage.setValue 'recentFolders', recentFolders, callback

  unsetRecentFolder:(folderPath, callback)->

    recentFolders = @appStorage.getValue('recentFolders')
    recentFolders = [] unless Array.isArray recentFolders

    splicer = ->
      recentFolders.forEach (recentFolderPath)->
        if recentFolderPath.search(folderPath) > -1
          recentFolders.splice recentFolders.indexOf(recentFolderPath), 1
          splicer()
          return
    splicer()

    recentFolders.sort (path)-> if path is folderPath then -1 else 0
    @appStorage.setValue 'recentFolders', recentFolders, callback
