start to refactor vote module and implement it