add polymorfical voting system
refactoring voting system