     @groupVms = []
     @defaultVmName = null
     @vmDomains = {}
+    @vmRegions = {}
 
   fetchTotalVMCount:(callback)->
     KD.remote.api.JVM.count (err, count)->

    @fetchVmName options, (err, vmName) =>
      return callback err  if err?
      options.correlationName = vmName
      @kc.run options, (rest...) ->
        # log rest...
        callback rest...

  _runWrapper:(command, vm, callback)->
    [callback, vm] = [vm, callback]  unless 'string' is typeof vm

        callback? err, vm, info
      , no

  fetchRegion: (vmName, callback)->
    if region = @vmRegions[vmName]
      return @utils.defer -> callback region

    KD.remote.api.JVM.fetchVmInfo vmName, (err, info)=>
      if err
        warn err
        callback 'aws'
      else
        @vmRegions[vmName] = info.region
        callback @vmRegions[vmName]

  fetchVmName: (options, callback) ->
    if options.vmName?
      @utils.defer -> callback null, options.vmName
