       @info vm, callback? rest...
 
   hasDefaultVM:(callback)->
-    # Default VM should be the personal vm in Koding group
-    @fetchVMs (err, vms)->
-      if err
-        warn "An error occured while fetching VMs:", err
-        return callback yes
-
-      # Check if there is at least one personal vm from koding group
-      for vm in vms
-        if (vm.indexOf 'vm-') is 0 and (vm.indexOf "#{KD.defaultSlug}.kd.io") > -1
-          return callback yes
-
-      callback no
+    KD.remote.api.JVM.fetchDefaultVm callback
 
   createDefaultVM:->
-    @hasDefaultVM (state)->
+    @hasDefaultVM (err, state)->
       return warn 'Default VM already exists.'  if state
+      new KDNotificationView title: "Creating your VM..."
       KD.remote.cacheable KD.defaultSlug, (err, group)->
         if err or not group?.length
           return warn err

        callback? err, vm, info
      , no

  hasThisVM:(vmTemplate, vms)->
    for i in [0..vms.length]  when ("#{vmTemplate}".replace '%d', i) in vms
      return ("#{vmTemplate}".replace '%d', i)
    return no

  fetchVmName: (options, callback) ->
    if options.vmName?
    then @utils.defer -> callback null, options.vmName
    # else if KD.whoami().type is 'unregistered'
    # then @utils.defer -> callback null, 'guest'
    else
      @fetchDefaultVmName (defaultVmName) ->
        if defaultVmName?

          else warn err

  createNewVM:->
    @hasDefaultVM (err, state)=>
      if state then @createPaidVM() else @createDefaultVM()

  showVMDetails: (vm)->
