I agree with the tomato staking. Digby has always been really, really difficult. People recommended tomato staking, so I thought I would give it a try. He doesn't do it all day right next to my side, but I found that even a little bit is enough to keep him better in control. We got IKEA children dishes, so now when I wash the dishes, he has something to dry and put away. When I'm making breakfast, lunch, or dinner, he is next to me "helping". When it's time to set the table, he gets the plastic dishes and sets it for everyone. He's much more agreeable if his energy is directed into productive things.
I will say though that the times I am most frustrated are the times when I've been distracted, either by the computer, TV, other children, etc. He has no impulse control, he needs to be corrected immediately. I don't think I'm very punitive in my discipline, but when they do something wrong, they must apologize for what they've done, say they won't do it again and ask nicely. Timeouts are occasionally used as well. Anyways, if I'm not there to direct his energy into something acceptable, he puts it into something he considers fun (playing in water and flooding the sink, pulling out every stinking toy on the shelf, etc.)