I'd suggest you invest in a choker collar, and work with him in your home using the "stay with me" command for 5-10 mins at a time. This builds a great bond between you and the dog, basically he's doing what your doing when using this command, he should be no further than the full length of the leash from you, if he goes beyond the full length of the leash or tugs at it..you snatch the leash and use the word "no". It's hard to do as a parent but he learns quickly something he did was incorrect, after you use the word "no" use a high pitch tone and call the dog back to you "offering praise" **this is VERY important**.
Do this for a few weeks in the home, then the goal would be to move it out side, keeping him on "stay with me" as you get to objects that spook the dog make sure he's by your side (don't try to drag him to the object) rather keep him by you insuring him "it's ok", he/she will go through a progression of taste,smell, etc. At that point you've been standing by the object for a few minutes, the goal is to insure you never leave that object allowing him to hide/bark/or show aggression.
The bond with "stay with me" is the building block for pretty much all things.
GOOD LUCK!