rearange to use same cache