Huge backend change, support for asynchronous provider tasks, a working cache