added hook for optional cache backend