added cache wrapper