     @_fetchQueue.push cb  if cb
     return if @_fetchQueue.length > 1
 
-    path   = "/home/#{KD.nick()}/Applications"
-    appDir = FSHelper.createFileFromPath path, 'folder'
-    appDir.fetchContents KD.utils.getTimedOutCallback (err, files)=>
+    @watcher.watch KD.utils.getTimedOutCallback (err, files)=>
       if err or not Array.isArray files or files.length is 0
         @putAppsToAppStorage {}
         callback()  for callback in @_fetchQueue


    log "Synchronizing AppStorage with FileSystem..."

    path   = "/home/#{KD.nick()}/Applications"
    appDir = FSHelper.createFileFromPath path, 'folder'
    appDir.fetchContents KD.utils.getTimedOutCallback (err, files)=>
      return warn err  if err

      existingApps = @filterAppsFromFileList files

      @updateDefaultAppConfig extension, appName

    mainController.on "accountChanged.to.loggedIn", @bound "getPublishedApps"

    #  - ANewAppAdded
    #  - AFileRemoved
    #  - AnAppRemoved
    #  - AFileChanged
    #  - AManifestChanged

    @watcher.on "ANewAppAdded", (app, change)=>
      # @bound "syncAppStorageWithFS"
      @fetchAppFromFs app, => @syncAppStorageWithFS()

    @watcher.on "AnAppRemoved", (app, change)=>
      # @bound "syncAppStorageWithFS"
      @invalidateDeletedApps [app], no, =>
        @emit "InvalidateApp", app

    @watcher.on "AManifestChanged", (app, change)=>
      @fetchAppFromFs app, =>
        @emit "UpdateAppData", app, @getManifest app

  getAppPath:(manifest, escaped=no)->

