     else
       groupSlug  = KD.singletons.groupsController.getGroupSlug()
       groupSlug ?= 'koding'
-      appStorage = new AppStorage "vm-list", "1.0"
-      appStorage.fetchValue groupSlug, (vms)->
-        vms or= []
-        if vms.length > 0
-          mountVms vms
+      @appStorage.fetchValue "mountedVM", (vms)->
+        vms or= {}
+        vms[groupSlug] or= []
+        if vms[groupSlug]
+          mountVms vms[groupSlug]
         else
           KD.remote.api.JVM.fetchVmsByContext {}, (err, vms)->
             return callback? err  if err

    for path, vmItem of @treeController.nodes  when vmItem.data?.type is 'vm'
      return vmItem  if vmItem.data.vmName is vmName

  saveMountState:(vmName, state)->
    groupSlug  = KD.singletons.groupsController.getGroupSlug()
    groupSlug ?= 'koding'
    appStorage = new AppStorage "vm-list", "1.0"
    appStorage.fetchValue groupSlug, (vms)->
      vms or= []
      if state and vmName not in vms
        vms.push vmName
      else if not state and vmName in vms
        vms.splice vms.indexOf(vmName), 1
      appStorage.setValue groupSlug, vms

  mountVm:(vm, fetchContent = yes)->
    return unless KD.isLoggedIn()

    return unless KD.isLoggedIn()
    return warn 'No such VM!'  unless vmItem = @getVmNode vmName

    @updateMountState vmName, no

    if vmItem
      @stopWatching vmItem.data.path
