OK here my advice-
Use the pinch collar/choke chain. Have him at heel, then start off with your right foot commanding "heel" If he moves out in front, pull back into position commanding "heel" again, when you stop, stop using left foot, command "heel" as you stop, then command "sit" and praise him. Repeat. The best way to teach is by conditioning or in other words go on a 15 minute walk doing this process throughout. Do this daily until he gets it, and from then on, only expect 110% compliance on "heel" if hes no compliant pull back and command heel.
Also you may want to invest in a heeling stick. Using this, command heel, if he goes out in front, tap his chest, this will automatically cause him to reheel to turn off the pressure. Keep the stick over your shoulder so you already have a good swing and he will get it out of nowhere because he does not see it coming until he has moved out in front. This usually takes one to two sessions before he complies.
Halters in my opinion only do harm in obedience, they should only be used if the dog has successfully completed ALL obedience commands and is well socialized, and ignores distractions. IE an older well trained dog. If there is no pressure the dog will only fight you and you'll end up popping pain relievers from the headache.
Good luck.
-Dix