     @publishedApps  = {}
     @_fetchQueue    = []
     @appStorage     = KD.getSingleton('appStorageController').storage 'Finder', '1.1'
+    @watcher       = new AppsWatcher
 
     @fetchApps =>
       @getPublishedApps()

    @_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)=>
      if err or not Array.isArray files or files.length is 0
        @putAppsToAppStorage {}
        callback()  for callback in @_fetchQueue

      @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)->

