replace std::share_ptr<T>(new T) with boost::make_shared<T>()