allocator function add