move vote logic to a manager