This paper presents an improved protocol for Internet voting that allows recasting of ballots to eliminate voting errors, encourages early voting and provides an opportunity for changing votes as the election campaign progresses. The protocol is able to meet the competing requirements of verifiability and privacy by using a distributed security architecture, involving multiple servers, and multiple audit channels. It also detects servers that might be cheating.