Three by far is harder then two for boys and girls.
What you need now is to stop counting, he will to tune you out and NOT learn to listen immediately in emergency situations. It is time to teach him he has a choice to comply to your rules or be in trouble. One warning and then to have priviledges/toys/bedtime minutes taken away. No negotiating, no whining and do not cave in.
For my son, charts did wonders. He is almost five now and still loves it.
Put up a chart for a month with the days of the week. When he fails to do things well or without a fit, a frowny, three frownies in a day mean...no park, toy taken away, 10 minutes off of bedtime, no dessert, whatever works for him.
If he does well and doesn't get three frownies in a day, then make that a smiley day. After 10 days of smiley days a special treat, ice cream, small toy he loves or something fun. That teaches him control over his consequences, he can visually see where he is at with things. You can then remind him where he is at, like "well you have two frownies today already, are you sure you want to act like this?".... Don't do anything but warn him once and then ask "well do you want a frown or a smile today?" Have him help decorate the chart and explain what it means. Then it is on him how his day goes.
He is gaining independence and testing you to where his boundaries are. With boys visuals and very clear consistent rules are much easier for them. Make sure you get on his level, after he is calm and explain what he did wrong, have him repeat it so he understands. I can tell my son stuff and it goes right in one ear and out the next! :)
Just have him repeat the rules so you know then he has it and then it is up to him if he does what he is suppose to.
Be consistent, mean what you say and no idle threats. Time outs are great for if you are somewhere else too, so he knows the rules follow you wherever you are. If he hits, simply and gently grab his hand, get on his level, look him square in the face and tell him "it is not nice to hit we do not do that!!" and then a frowny.