final version with cache busting