added memory allocator