Ride-pool Assignment Algorithms: Modern Implementation and Swapping Heuristics