             }
         }
         
-        // Find the row we should snap to
         let snapDistances = (rowSnapDistances + sectionSnapDistances).filter { delegate?.tableView?(tableView, canReorderRowAtIndexPath: $0.path) != false }
-        guard let newDestinationRow = snapDistances.minElement({ $0.distance < $1.distance })?.path else { return }
-        
-        guard newDestinationRow != destinationRow else { return }
-        
-        // Update state
-        reorderState = .Reordering(
-            sourceRow: sourceRow,
-            destinationRow: newDestinationRow,
-            snapshotOffset: snapshotOffset
-        )
-        
-        // Notify the delegate
-        delegate?.tableView(tableView, reorderRowAtIndexPath: destinationRow, toIndexPath: newDestinationRow)
-        
-        // Update table view
-        tableView.beginUpdates()
-        tableView.deleteRowsAtIndexPaths([destinationRow], withRowAnimation: .Fade)
-        tableView.insertRowsAtIndexPaths([newDestinationRow], withRowAnimation: .Fade)
-        tableView.endUpdates()
+        return snapDistances.minElement({ $0.distance < $1.distance })?.path
     }
     
     // MARK: - Snapshot view

            let scrollVelocity = autoScrollVelocity()
            
            if scrollVelocity != 0 {
                // Determine how far we should scroll this frame
                let elapsedTime = displayLink.timestamp - lastTimeStamp
                let scrollDelta = CGFloat(elapsedTime) * scrollVelocity
                
                // Set content offset
                let oldOffset = tableView.contentOffset
                tableView.setContentOffset(CGPoint(x: oldOffset.x, y: oldOffset.y + CGFloat(scrollDelta)), animated: false)
                
                // Make sure we're not scrolling past content bounds
                tableView.contentOffset.y = min(tableView.contentOffset.y, tableView.contentSize.height + tableView.contentInset.bottom - tableView.frame.height)
                tableView.contentOffset.y = max(tableView.contentOffset.y, -tableView.contentInset.top)
                
                // Update snapshot view
                let actualScrollDistance = tableView.contentOffset.y - oldOffset.y
                snapshotView.frame.origin.y += actualScrollDistance
                
                // Update the destination row
                updateDestinationRow()
            }
        }

        snapshotView.layer.shadowRadius = shadowRadius
        snapshotView.layer.shadowOffset = shadowOffset
        
        tableView?.addSubview(snapshotView)
        self.snapshotView = snapshotView
    }
    
    private func removeSnapshotView() {
