might be better to use a callback instead of a return value, e.g. if generating a report involves some computations and takes some time