only download source files when necessary