Add initial cache implementation