Change Allocator design again and reimplement Unqiue pointer.