refactored to include voteService