add memory.hpp, add ntd::make_smart