changed allocator to return void*