add simpler and fancier cache variants