     @Pane      ?= thisPane.constructor
     @PaneAxis  ?= root.constructor
 
+    parent.removeChild(thisPane, true)
     if root.getOrientation() isnt orientation
       @debug "Different orientation"
-      for child in root.getChildren()
-        root.unsubscribeFromChild(child)
-
-      origRoot = @copyPaneAxis root
-      root     = new @PaneAxis({container, orientation, children: [origRoot]})
+      root = new @PaneAxis({container, orientation, children: [@copyRoot(root)]})
 
     newPane = new @Pane()
     switch direction

    {container, orientation} = paneAxis
    new paneAxis.constructor({container, orientation, children: paneAxis.getChildren()})

  # [FIXME]
  # Occasionally blank pane, remain on original pane position.
  # Clicking this blank pane cause Uncaught Error: Pane has bee destroyed.
  # This issue is already reported to
  #  https://github.com/atom/atom/issues/4643
  very: (direction) ->
    return if @getPanes().length is 1
    thisPane = @getActivePane()

        parent.insertChildAfter(firstChild, children.shift())
      axis.destroy()
      parent

  # Utility
  getPanes: ->
