voting algorithm