           @connect {dia : domain , joint : 'right'}, \
                    {dia : machine, joint : 'left' }, yes
 
-  askForApprove:(items, action, callback)->
+  createApproveModal:(items, action)->
     return unless KD.isLoggedIn()
       new KDNotificationView
         title : "You need to login to change domain settings."
-
-    modal = new EnvironmentApprovalModal {action}, items
-    modal.once 'Approved', => callback modal
+    return new EnvironmentApprovalModal {action}, items
 
   whenItemsLoadedFor:do->
     # poor man's when/promise implementation ~ GG


    items = parseItems source, target
    {domain, machine} = items
    return unless domain

    @askForApprove items, 'delete', (modal)=>
      return unless machine? # Remove a domain from a machine
      jDomain = domain.dia.getData().domain # JDomain
      vmName  = machine.dia.getData().title # JVM.hostnameAlias
      jDomain.unbindVM hostnameAlias: vmName, (err)=>


    items = parseItems source, target
    {domain, machine} = items
    return unless domain or machine

    if domain.dia.getData().domain.hostnameAlias.length > 0
      return new KDNotificationView
        title : "A domain name can only be bound to one VM."

    @addFakeConnection {
      source, target,
      options : {
        lineColor  : "#cdcdcd"
        lineDashes : [5]
      }
    }

    modal = @createApproveModal items, 'create'
    modal.once "KDObjectWillBeDestroyed", @bound 'resetScene'
    modal.once 'Approved', =>
      jDomain = domain.dia.getData().domain # JDomain
      vmName  = machine.dia.getData().title # JVM.hostnameAlias
      jDomain.bindVM hostnameAlias: vmName, (err)=>
        modal.destroy()
        return KD.showError err  if err
        jDomain.hostnameAlias.push vmName
        createConnection()
