updated with polling