Original implementation
Working implementation
Under-construction version
Fixed move ctor and operator=