refined upvote and downvote functionality