actually use caching hook