Refactored to encapsulate implementation decisions in Disk and Allocator