changed from boost::shared_ptr to std::shared_ptr