added cache

full working solution