The second you mentioned stealing and not dropping, I was about to ask if you have a Cocker Spaniel 😂
Basically, things build over time, and progress stops when you stop working on it. I understand because it's the same with my dog. I'll think I have him solid on something, but then I realise he's actually really sloppy in certain areas - and then I realise I haven't actually worked on that area in months and months. Hell, maybe even a year.
You can try following an online course, like Zak George's Perfect Pup or whatever it's called (if you go on his website, it should be linked there).
But basically, I would focus on one thing at a time, and just spend a few minutes a day working on that thing. Pick the things that are going to make the biggest different to your life, his safety, etc. So, recall is a great one. And waiting at gates / doors / etc.
For drop it, you can keep practising, but I would honestly just go for management right now. Keep stuff out of his reach, use pet gates, don't have socks lying around, put slippers and shoes away, etc. You can work on those things later.
My Cocker is 2 years old and only now starting to give up things he manages to steal. But it always requires a treat or other reward (like a ball to swap him for). He will, however, now let us hold whatever is in his mouth and will release it when we ask, even if there is sometimes a bit of resistance.
I also trained another Cocker previously who mastered drop it in literally a few sessions, purely by using toys and playing "swap". I'd throw a toy, he'd bring it back, I'd say drop it, and I wouldn't throw the next toy until he'd dropped the first. This then worked in every other scenario when I wanted him to drop something, even without a reward in my hand. So each dog is different! He was much, much harder to recall train and it took a year to master that. Whereas my Cocker has always had great recall and it's gotten even stronger over time.
For everything, start easy and work up over time. So for doors, make sure he's tethered to something and ask him to wait a second, then say "ok!" or "free!" or whatever your release word is. Then work up to 3 seconds, 7 seconds, etc., until he automatically waits when you go through a door or gate. This kind of thing takes months, maybe even 1yr +, so don't be discouraged. Just keep working at it. If he breaks before you release him, just calmly return him to his spot and try a shorter duration, release him, and end it there. Don't take chances with the front door. Obviously be careful and use internal doorways until he's reliable.
For recall and staying close, use a long line that trails on the ground. When he gets a meter or so ahead of you, call him back and give him a super high value treat / favourite toy / loads of excited praise. Rinse and repeat. If he ignores you, step on the line and keep him with you. Long lines can be annoying to use, and this process takes ages, but it will be worth it in the end to have a decade+ of solid off lead behaviour. :)