added #include <memory>