new cache implementation that doesnt work