use immutable list used for cache