     }
 
     var lastButton = firstButton
-    self.tools[1..<self.tools.count]
+    self.tools
       .map({ $0.button })
-      .forEach { button in
-        let margin = self.draggedOnBarButton == button ? dimensionForDraggedButton : 0
+      .enumerated()
+      .forEach { (idx, button) in
+        // self.tools.first is already done above
+        guard idx > 0 else {
+          return
+        }
+
+        let margin = self.draggedOnToolIdx == idx ? dimensionForDraggedButton : 0
         switch self.location {
         case .top:
           self.layoutConstraints.append(contentsOf: [

  }

  fileprivate func draggedButtonDimension() -> CGFloat {
    guard let button = self.draggedOnBarButton else {
      return 0
    }

    switch button.location {
    case .top, .bottom:


  fileprivate func endDrag() {
    self.isDragOngoing = false
    self.draggedOnToolIdx = nil
    self.relayout()
  }
}
