Generalise the vote class a little