what have you tried so far? a halti is a good start, but needs to be combined with a 'programme' to teach him how you actually want him to walk. my preferred method is the stop start method. literally, every time he pulls, you stop. and put him into a sit. keep him there until he is calm, then give him the 'move forward' command (whatever u use is fine.. just keep it consistent!). praise him when he is walking calmly, but as soon as he starts to pull again.. ie.. the minute the lead is at full tension, stop again and put him into the sit again until hes calm.. you will probably find that you need to do this A LOT on the first few walks, but if you are consistent and persistent with it, it will work! you might get some funny looks from the neighbours etc, but its worth it in the end!. Some trainers use a 'change direction' instead of a stop / sit, but i have found that with most dogs, they arent pulling towards anything specific.. so therefore changing direction has less effect as the dog doesnt care which direction he pulls in so long as he gets to pull! this version is handy tho if the dog is pulling towards something, like another dog etc, as you are increasing the distance between the dog and the 'subject' hope that makes sense! good luck!