add cache to avoid duplicated downloads