better cache and minor change