Add method takes rvalue reference.
Change type to allow pointer swapping through move semantics.
- working out a crash related to the lack of clean memory.