sort out the allocator abstraction
Surface allocator