Restructure to support multiple backend caches