implemented local caching, decoupled download step