add caching to poll choices, and context to poll/poll_choice callbacks