threading and check to avoid repeated downloads