added allocator interface