mapreduce on demand, caching added