When DS was 4, we were moving cross country in the car. Direct consequences got meltdowns; so we did a point system that ranged from -5 to 5. And it could range back and forth based on our views of things he'd do. If it got to -5 then there would be an unspecified consequence. The one time we hit -5, he didn't get to choose his lunch at the next stop. (and +5 got a reward)

We've also used mystery choices for things. Typically the mystery being a better option. Like dessert, do you want chocolate ice cream, two cookies, or a mystery? (and mystery ends up being chocolate ice cream with sprinkles)

We also pulled choice back to make it about us as much as him: I'm willing to get you two cookies or ice cream. Would you like me to do either of those?

He has a strong sense of justice and framing things into mutual fairness really seems to work. At almost seven now, I'm really happy with his overall progress and character.