Use a multi-step process, caching results in between, while informing the user about the current steps/progress