use blocking read