A couple of thoughts FWTW...
Natural Consequences: When they exist in a way that creates impact, generally the most effective. I think what can be considered natural is somewhat based on phrasing. If legos get thrown all over his own room, then leaving them to be stepped on is possibly an effective natural consequence. However, if they are all over the living room, they are a "risk" for others and I do think that putting the legos in "time out" can be considered a natural consequence. IRL, if someone leaves a hazard in the road, it will be removed by the city and probably disposed of or impounded. So it is natural that if a hazard is left in the living room, the person who removes the hazard takes possession of it and determines the conditions for return. Which brings me to...
Rules: The smarter kids are, the better they are at negotiating and hair splitting. We have three rules: Safe, Respectful, Responsible. Can't think of any problem behavior that can't be addressed as a violation of one of those three ways of living. It allows you to switch to question mode ("Is leaving the legos on the floor safe? Respectful? Responsible? How are you going to fix that problem? If I have to fix the problem there will be a consequence attached to it").
Consequences: IMHO children are children. No matter how intelligent, they are still not of an age to be "in charge". If we are helping our children learn how to co-exist in a world with others, then we have to help them learn that there are boundaries and expectations that are enforceable and have consequences. It can provoke a lot of unpleasantness in response, but with consistent enforcement behavior will generally change (after it first spikes in an attempt to derail the system we put in place

).
Reinforcers: I personally have mixed feelings about reinforcers, but I think it is a case by case decision. However, when reinforcers are used, I think it helps to keep these things in mind:
1) To be effective, the initial reinforcer should be based on criteria a child is likely to meet a little over 50% of the time. This makes the reinforcer reachable, but motivates some improved effort. Over time, the criteria for earning the reinforcer should grow. So, for instance, if the reinforcer is initially earned for every half day without hitting, it should eventually move to being earned for a day without hitting. Then it should be earned for a week without hitting. The size of the reinforcer can grow in relation to the changing time frame (e.g. one token per 1/2 day becomes 2 tokens for a full day, becomes 7 tokens for a week. Criteria is all or nothing, so once the criteria is 2 per day, there isn't a way to have a one token day). This can go hand in hand with consequences. So, no mention of not earning a token or taking a token away, provide an appropriate consequence for unsafe behavior; then when a token is earned, focus positive attention on that success.
2) Reinforcers seem to work best when attached to specific, observable behaviors and considered a short term intervention for that particular behavior. For instance, it seems like the highest priority behavior would be aggression. Identify a replacement behavior for dealing with anger (e.g. going to a "stop the world spot" to cool down) and reinforce every time he uses that in place of aggression.
3) Consider the size of the reinforcement. If it is likely to stockpile so that DS begins to manipulate/weigh the "cost", then it is time to adjust the reinforcement schedule. There should never be so much stockpiled that it feels like there is an excess of wealth.
Also, it helps to have a variety of possible consequences in your head. That way fix it or take a consequence can't be gamed as effectively. In other words, if DS says "what's the consequence?", you can say, "I"ll let you know that if you choose not fix the problem". Then the key is to set conditions so that DS can't change his mind after he hears the consequence ("Ooooh. That's unfortunate that you didn't like the consequence. Well, next time you can make a different choice, but you already moved past the fix it without a consequence point"). Love and Logic would say that we often allow ourselves to be pressured into deciding on a consequence in the moment and that it is ok and often best to say, "OK, you chose not to fix it. I'll let you know what the consequence is later".
I don't pretend to be the expert here--believe me, my own DS is a great limit-pusher. So, take my two cents for whatever they're worth
