Changing direction is what worked best for us. BEFORE he pulls, before, before, before. He wanted to go for a walk, he understood the walk was with me, changing direction kept him guessing which way it would be. We learned in class to do a formal lesson, mentally mark out a square on the ground, hit the corners as randomly as you can, do reverse and about reverse turns, bump him out of the way gently when needed.
I have always used a Volhard collar, which is similar to a choker except it does up with a snap on a floating ring (or there's an option to not, in which case it will not choke) and went to a prong solely for control in close quarters and other dogs for a time. Oban once pulled me down the street wearing his prong, it's not pull proof but it helps. The prong only gave me control till we got past that distraction in training. I don't even know where it is now, in a drawer somewhere, haven't seen it in years. I still use a custom made chain Volhard because the snap allows me to fasten leash with collar attached around my waist when we go off leash.