Using std shared_ptr instead of boost