Refactored, and added framework for different voting systems