Vital if we want to support #21. Without a cache layer we will have to lock on each allocation/deallocation