cache: move cache to be a ctor parameter