smart pointers

using smart pointers from C++11 new features