             joint = conn.dia.joints[conn.joint]
             if joint not in @activeJoints
               joint.showDeleteButton()
-              joint.on 'DeleteRequested', @bound 'disconnectHelper'
+              joint.on 'DeleteRequested', @bound 'disconnect'
               @activeJoints.push joint
 
   handleLineRequest:(joint)->
     @_trackJoint = joint
 
-  # Needs refactoring ~ GG
-  disconnectHelper:(dia, joint)->
-    return  if @activeDias.length isnt 1
-
+  findTargetConnection:(dia, joint)->
     isEqual = (connection)=>
       (dia is connection.dia) and (joint is connection.joint)
-
     activeDia = @activeDias.first
-    connectionsToDelete = []
     for conn in @connections
       if ((isEqual conn.source) or (isEqual conn.target)) and \
          ((conn.source.dia is activeDia) or (conn.target.dia is activeDia))
-        connectionsToDelete.push conn
-
-    @connections = (c for c in @connections when c not in connectionsToDelete)
+        return conn
+
+  # Needs refactoring ~ GG
+  disconnect:(dia, joint)->
+    return  if @activeDias.length isnt 1
+
+    connectionsToDelete = @findTargetConnection dia, joint
+    @connections = (c for c in @connections when c isnt connectionsToDelete)
     @highlightLines @activeDias
 
-  disconnect:(dia)->
+  disconnectAllConnections:(dia)->
 
     newConnections = []
     for connection in @connections

        return no  unless restrictions
        return no  if source.joint in restrictions
      [source, target] = [target, source]
    return yes

  updateScene:->


  diaAdded:(container, diaObj)->
    diaObj.on "JointRequestsLine",   @bound "handleLineRequest"
    diaObj.on "DragInAction",        => @highlightLines diaObj
    diaObj.on "RemoveMyConnections", => @disconnectAllConnections diaObj

  addContainer:(container, pos = {})->
    @addSubView container
