I have a little system that I have tried out with my boys... it may work out with you as well.
For instance, say Johnny hits Matt.
Since he is young, when he usually hits for no apperent reason, it is for attention from me, so instead of saying "Johnathon NO!", I go to Matt, asking him if he is ok and giving my attention to him. Ignoring the behavior from the rambuctious 3 year old is my first step. If he went and did the same 5 minutes later, I would put him in time out. Then it would go to popping him on the butt/hand.
Another senario...
Matthew does something wrong at school.
First step, I talk to him about it and tell him what the consequences are for doing what he did. If it happens again, he starts getting things taken, one by one. Usually TV goes first, since that is his most prized possession. If he continues the unwanted behavior, he will get grounded. We do not usually spank for these small incidents. He is older and he has had numberous times before to change. If he does well the next day after the incident, he gets rewarded. This tells him what behavior we want out of him and what behavior we would like to see more.
You understand what I am saying here? When it involves hitting/hurting one another, we usually do the three strike thing, we also punish for those smaller incidents,just not as severly. When they do well they get rewards.