Ditto Cheryl B. My guy is the same as yours, some things have no choices anymore because he would go back and forth, too. I've had to become proactive, rather than reactive, think things through and come up with strategies to prevent certain behaviors. Tantrums, meltdowns, etc., he goes to his room, I will not listen or engage him. Whining, "I can't understand you, please talk in a normal voice so I can help you." I don't ask why, it prolongs it :-/ Time-outs, sit with him and make him stay, it's over when he stops thrashing and yelling for 2 minutes. Stop rewards, they're not working and actually may be confusing him at this point. Consider having him lose privleges like TV, video games, a favorite toy, an outing or going to bed early.
These tactics the last year and a half have truly helped. He'll be 4 in April and rarely acts out now, and when he does he stops almost as soon as he's reminded. Preschool we had a hitting problem the first couple of months, something I never foresaw, but the school staff who worked with us said was right in line with his "spiritedness", and it has thankfully ended. It's been a LOT of work, I am so looking forward to all-day kindergarten, but it's not until fall 2014 ;)