Checkpoint of process based solution. Much cleaner and easier to test.
Use FSM to better control / understand the state of the elector.
The code could be improved by adding features to Celluloid's FSM
module, e.g., the ability to execute the state block when re-entering
the same state, having labeled transitions, and executing code on
transitions.