It's a tough subject for sure.
Most of them can be exploited or just don't have a good method of implementation.
There's no easy solution for the flagging problem although @aggroed and a lot of others have suggested some very cool changes.
Very complex stuff.