Initial version with polling