Voting refactor