refactor vote features