Train Carriage problem

Hey devs, I have a AI train system that uses CFrame to move a part between waypoints (these waypoints are spaced differently). I then weld the rest of the train to the part, this isnt the best way to do it as the wheels dont really follow the track, but also this makes it really had to make carriages that feel realistic. I wanted to know if there was any way I could add carriages easily and allow for carriages to be easily added/removed.

I have already tried using things such as hinge constraints on parts to move them similarly to how a train carriage would move in real life, however that causes the train to become jittery and a bit unrealistic for what I want.

If anyone has any suggestions is highly appricated.

The only way I think I can currently do it is if i make each carriage move to each waypoint individually, but when It comes to stopping the train the carriages will merge into one another.