It's only difficult because people keep voting for politicians willing to throw fundamental rights out the window. I don't think any solution exists in this circumstance. People want to vote for bad politicians but to get good results. Good luck designing a system that does that, and does not just discount what people vote for.