refactored pull into poll