Well, Cadbury has two modes - charge ahead or stop like a brick and sniff something so I suddenly come to an abrupt halt
I don't know if yours is a puller or a straggler, so I'll just describe both things I do with Cadbury.
First if its pulling, if Cadbury pulls I simply stop and stand still, as soon as he realises he has come to a grinding halt he'll look back, I'll call him and as he trots back to me lots of 'good boy' etc. He has to come back to heel (you can lure with a treat to begin with) then off we go again. If he is really reluctant I will walk backwards a few paces or change direction to encourage him to follow.
Now if its the opposite and he has found something interesting to smell and has stopped dead I use my voice, lots of encouragement, maybe a very gentle tug (but I mean very gentle) as soon as he looks up - 'good boy, come on then, good boy'. Lots of silly praise and when he comes to my side a treat, then off we go again.
All the time he is walking beside me nicely lots of fuss and praise - I also use a clicker and click when he is walking lovely and give him a small treat. I am now working on only clicking him for when he walks nicely and glances at me (this will also build into nice heelwork).
My trainer constantly tells me I need to use my voice more as I tend to be a quiet person She tells me she wants me to get Cadbury to do things by voice alone and not having to guide him with the lead.
I do have a head collar, but it is only for emergencies when Cadbury is almost strangling himself with his collar

and she prefers me to work purely on a flat collar. I am the only one in the class who uses one and I am now trying to use it as little as possible.
The final tip was one that really made the difference with Cadbury. it was simply to make him wait at doorways, for me to go first and then call Cadbury through. She told me to start by opening and shutting the door so Cadbury didn't know if it was safe to go through or not, then asking for him to wait. If he started to charge ahead, take a pace back, close door and repeat 'wait'. He very quickly learnt that if he didn't wait he never got out, now he walks so much better and doesn't charge out doorways (which was a major problem).
It has taken time, patience and consistency to improve Cadbury's walking, but he was older when I started (over a year) so had a LOT of bad habits to correct, but he has improved immensely. I can even get him to sit when other dogs are coming rather than pull me down the road.
You can get there, because honestly Cadbury was terrible - he had me over at Christmas and I hurt my hand

Now he trots, most of the time, at my side. But I'm not allowed to let the lead go tight EVER!

My trainer quickly tells me if it does, she shouts 'loose lead, Sophie!'
Hope that helps.