 
     items = parseItems source, target
     {domain, machine} = items
-    return unless domain
-
-    if machine?
-      if domain.dia.getData().domain.hostnameAlias.length > 0
-        return new KDNotificationView
-          title : "A domain name can only be bound to one VM."
-
-    if machine? # Assign a domain to a machine
+    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()

          @connect {dia : domain , joint : 'right'}, \
                   {dia : machine, joint : 'left' }, yes

  askForApprove:(items, action, callback)->
    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

  whenItemsLoadedFor:do->
    # poor man's when/promise implementation ~ GG


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

    modal = @createApproveModal items, 'delete'
    modal.once 'Approved', =>
      jDomain = domain.dia.getData().domain # JDomain
      vmName  = machine.dia.getData().title # JVM.hostnameAlias
      jDomain.unbindVM hostnameAlias: vmName, (err)=>
