refactor to enable multiple caches per tileset