added idea of an allocator