improved cast_vote and vote methods