diff --git a/dune/fufem/any.hh b/dune/fufem/any.hh
index 9e367f57ab7b28bcf4297b1f854175b8f1ed57ad..27e467057a1ca857bc3af5ddff125c75328ffa0f 100644
--- a/dune/fufem/any.hh
+++ b/dune/fufem/any.hh
@@ -2,9 +2,9 @@
 #define ANY_HH
 
 #include <list>
+#include <memory>
 
 #include <dune/common/typetraits.hh>
-#include <dune/common/shared_ptr.hh>
 #include <dune/common/classname.hh>
 
 
@@ -243,10 +243,10 @@ class any_shared_ptr_list :
          * \returns Reference to the stored shared_ptr
          */
         template<class T>
-        Dune::shared_ptr<T>& push_back_ptr(Dune::shared_ptr<T>& t)
+        std::shared_ptr<T>& push_back_ptr(std::shared_ptr<T>& t)
         {
             this->push_back(any(t));
-            return any_cast<typename Dune::shared_ptr<T>&>(this->back());
+            return any_cast<typename std::shared_ptr<T>&>(this->back());
         }
 
         /**
@@ -267,9 +267,9 @@ class any_shared_ptr_list :
          * \returns Reference to the stored shared_ptr
          */
         template<class T>
-        Dune::shared_ptr<T>& push_back_ptr(T* t)
+        std::shared_ptr<T>& push_back_ptr(T* t)
         {
-            Dune::shared_ptr<T> p(t);
+            std::shared_ptr<T> p(t);
             return push_back_ptr<T>(p);
         }
 };
diff --git a/dune/fufem/assemblers/localassemblers/variablecoefficientviscosityassembler.hh b/dune/fufem/assemblers/localassemblers/variablecoefficientviscosityassembler.hh
index 107e9d58adf5c499d9a9aacdd8390e511991e2d1..caa1930ea0d2f5e6271c1c171992ec8f3dd97d49 100644
--- a/dune/fufem/assemblers/localassemblers/variablecoefficientviscosityassembler.hh
+++ b/dune/fufem/assemblers/localassemblers/variablecoefficientviscosityassembler.hh
@@ -1,6 +1,8 @@
 #ifndef VARIABLE_COEFFICIENT_VISCOSITY_ASSEMBLER_HH
 #define VARIABLE_COEFFICIENT_VISCOSITY_ASSEMBLER_HH
 
+#include <memory>
+
 #include "dune/fufem/assemblers/localassemblers/strainproductassembler.hh"
 #include "dune/fufem/functions/analyticgridfunction.hh"
 #include "dune/fufem/symmetrictensor.hh"
@@ -47,8 +49,8 @@ class VariableCoefficientViscosityAssembler
             return stress;
     }
     protected:
-        Dune::shared_ptr<const GridFunction> muShearGridFunctionP_;
-        Dune::shared_ptr<const GridFunction> muBulkGridFunctionP_;
+        std::shared_ptr<const GridFunction> muShearGridFunctionP_;
+        std::shared_ptr<const GridFunction> muBulkGridFunctionP_;
 };
 
 
diff --git a/dune/fufem/assemblers/localassemblers/vonmisesstressassembler.hh b/dune/fufem/assemblers/localassemblers/vonmisesstressassembler.hh
index 0771e2ef94cb53f86236620fb716b151eae8ee1d..69eba0ef21eaa2e981959cb2b24541660b136a33 100644
--- a/dune/fufem/assemblers/localassemblers/vonmisesstressassembler.hh
+++ b/dune/fufem/assemblers/localassemblers/vonmisesstressassembler.hh
@@ -4,8 +4,8 @@
 #define VON_MISES_STRESS_ASSEMBLER_HH
 
 #include <cmath>
+#include <memory>
 
-#include <dune/common/shared_ptr.hh>
 #include <dune/common/fvector.hh>
 #include <dune/istl/bvector.hh>
 
@@ -45,7 +45,7 @@ public:
      * \param E  Young's modulus
      * \param nu Poisson's ratio
      */
-    VonMisesStressAssembler(double E, double nu, Dune::shared_ptr<GridFunction const> displace) :
+    VonMisesStressAssembler(double E, double nu, std::shared_ptr<GridFunction const> displace) :
         lambda_(E * nu / (1.0+nu) / (1.0-2.0*nu) ),
         twoMu_(E / (1+nu) ),
         displace_(displace)
@@ -91,7 +91,7 @@ private:
     const ctype twoMu_;
 
     /** \brief The displacement.*/
-    Dune::shared_ptr<GridFunction const> const displace_;
+    std::shared_ptr<GridFunction const> const displace_;
 
     /** \brief Compute linear strain tensor from the deformation gradient. */
     void computeStrain(const Dune::FieldMatrix<double, dim, dim>& grad, SymmetricTensor<dim>& strain) const {
diff --git a/dune/fufem/assemblers/localassemblers/weightedmassassembler.hh b/dune/fufem/assemblers/localassemblers/weightedmassassembler.hh
index 100194f78787ebdaccc40c655d34d8bb5ff97a54..dd2446edac8d3678fce06e6374b748f89b4b8b14 100644
--- a/dune/fufem/assemblers/localassemblers/weightedmassassembler.hh
+++ b/dune/fufem/assemblers/localassemblers/weightedmassassembler.hh
@@ -3,6 +3,7 @@
 #ifndef WEIGHTED_MASS_ASSEMBLER_HH
 #define WEIGHTED_MASS_ASSEMBLER_HH
 
+#include <memory>
 
 #include <dune/common/fvector.hh>
 #include <dune/common/fmatrix.hh>
@@ -120,7 +121,7 @@ class WeightedMassAssembler : public LocalOperatorAssembler < GridType, TrialLoc
         }
 
     protected:
-        Dune::shared_ptr<const GridFunctionType> weightGridFunctionP_;
+        std::shared_ptr<const GridFunctionType> weightGridFunctionP_;
         QuadratureRuleKey weightQuadKey_;
 };
 
diff --git a/dune/fufem/assemblers/transferoperatorassembler.hh b/dune/fufem/assemblers/transferoperatorassembler.hh
index 65305fb1fcf611d5e0d834f8c11fe41982c4a3c7..079105a3f262ce90ebed1913a70c161a10b09394 100644
--- a/dune/fufem/assemblers/transferoperatorassembler.hh
+++ b/dune/fufem/assemblers/transferoperatorassembler.hh
@@ -3,8 +3,8 @@
 
 #include <vector>
 #include <map>
+#include <memory>
 
-#include <dune/common/shared_ptr.hh>
 #include <dune/istl/matrixindexset.hh>
 #include <dune/common/bitsetvector.hh>
 #include <dune/common/timer.hh>
@@ -40,7 +40,7 @@ class MultilevelBasis
 
             levelBasis_.resize(maxLevel+1);
             for(int level=0; level<=maxLevel; ++level)
-                levelBasis_[level] = Dune::make_shared<LevelBasis>(grid.levelGridView(level));
+                levelBasis_[level] = std::make_shared<LevelBasis>(grid.levelGridView(level));
 
 
             idToIndex.resize(maxLevel+1);
@@ -107,7 +107,7 @@ class MultilevelBasis
 
     private:
         const GridType& grid;
-        std::vector<Dune::shared_ptr<LevelBasis> > levelBasis_;
+        std::vector<std::shared_ptr<LevelBasis> > levelBasis_;
 
         typedef typename GridType::Traits::GlobalIdSet::IdType IdType;
         std::vector< std::map<IdType,int> > idToIndex;
@@ -180,10 +180,10 @@ class TransferOperatorAssembler {
          * filled up with newly allocated matrizes.
          */
         template <class Matrix>
-        void assembleMatrixHierarchy(std::vector<Dune::shared_ptr<Matrix> >& M) const
+        void assembleMatrixHierarchy(std::vector<std::shared_ptr<Matrix> >& M) const
         {
             while(M.size() < grid.maxLevel())
-                M.push_back(Dune::make_shared<Matrix>());
+                M.push_back(std::make_shared<Matrix>());
 
             std::vector <Matrix*> Mraw(M.size());
             for (int i=0; i<M.size(); ++i)
diff --git a/dune/fufem/functions/analyticgridfunction.hh b/dune/fufem/functions/analyticgridfunction.hh
index 98b9c8cd2791adf614f5884b31f6963fe608dff5..ccc675b8c3336af7bb6f06b7e3662b94e0bcfee8 100644
--- a/dune/fufem/functions/analyticgridfunction.hh
+++ b/dune/fufem/functions/analyticgridfunction.hh
@@ -3,6 +3,8 @@
 #ifndef ANALYTIC_GRID_FUNCTION_HH
 #define ANALYTIC_GRID_FUNCTION_HH
 
+#include <memory>
+
 #include <dune/common/exceptions.hh>
 #include <dune/common/shared_ptr.hh>
 
@@ -138,11 +140,11 @@ class AnalyticGridFunction :
  * \param f Function to be wrapped a grid function
  */
 template<class GridType, class FunctionType>
-Dune::shared_ptr<const VirtualGridFunction<GridType, typename FunctionType::RangeType> > makeGridFunction(const GridType& grid, const FunctionType& f)
+std::shared_ptr<const VirtualGridFunction<GridType, typename FunctionType::RangeType> > makeGridFunction(const GridType& grid, const FunctionType& f)
 {
     typedef VirtualGridFunction<GridType, typename FunctionType::RangeType> GF;
     typedef AnalyticGridFunction<GridType, FunctionType> AGF;
-    typedef typename Dune::shared_ptr<const GF> GFSP;
+    typedef typename std::shared_ptr<const GF> GFSP;
     const GF* gf = dynamic_cast<const GF*>(&f);
 
     if (gf)
diff --git a/dune/fufem/functions/polynomial.hh b/dune/fufem/functions/polynomial.hh
index 28faf19131f595c99796e3c55b22eb583a264523..64cfd341e7fded02aa926ba01249c3bbb83d395f 100644
--- a/dune/fufem/functions/polynomial.hh
+++ b/dune/fufem/functions/polynomial.hh
@@ -4,8 +4,8 @@
 #define POLYNOMIAL_HH
 
 #include <map>
+#include <memory>
 
-#include <dune/common/shared_ptr.hh>
 #include <dune/fufem/functions/virtualdifferentiablefunction.hh>
 
 /** \brief  A class implementing polynomials \f$ P:\mathbb{R}\rightarrow\mathbb{R} \f$ of arbitrary degree.
@@ -109,7 +109,7 @@ class Polynomial:
                     newCoeffs.erase(firstEntry);
                 }
 
-                ret = dP.insert(std::make_pair(d,Dune::make_shared<Polynomial<DT,RT> >(newCoeffs))).first;
+                ret = dP.insert(std::make_pair(d,std::make_shared<Polynomial<DT,RT> >(newCoeffs))).first;
             }
 
             return *(ret->second);
@@ -122,7 +122,7 @@ class Polynomial:
         const CoeffType coeffs_;
         const unsigned int degree_;
 
-        typedef std::map<size_t, Dune::shared_ptr<Polynomial<DT,RT> > > DerivativeContainer;
+        typedef std::map<size_t, std::shared_ptr<Polynomial<DT,RT> > > DerivativeContainer;
         DerivativeContainer dP;
 
         unsigned int dCoeff(const int& d, const int& k) const
diff --git a/dune/fufem/functions/virtualfunctiontoboundarysegmentadapter.hh b/dune/fufem/functions/virtualfunctiontoboundarysegmentadapter.hh
index e932ad6a14488aa9cd7ae3e00d185311491083c0..12022a941b1b61b453ca95fc9d637a043ef1d83c 100644
--- a/dune/fufem/functions/virtualfunctiontoboundarysegmentadapter.hh
+++ b/dune/fufem/functions/virtualfunctiontoboundarysegmentadapter.hh
@@ -3,8 +3,9 @@
 #ifndef VIRTUALFUNCTION_TO_BOUNDARYSEGMENT_ADAPTOR_HH
 #define VIRTUALFUNCTION_TO_BOUNDARYSEGMENT_ADAPTOR_HH
 
+#include <memory>
+
 #include <dune/common/fvector.hh>
-#include <dune/common/shared_ptr.hh>
 #include <dune/common/function.hh>
 #include <dune/grid/common/boundarysegment.hh>
 
@@ -22,7 +23,7 @@ class VirtualFunctionToBoundarySegmentAdapter :
         typedef Dune::FieldVector<double,dim-1> DomainType;
         typedef Dune::FieldVector<double,dimworld> RangeType;
         typedef Dune::VirtualFunction<DomainType, RangeType> FunctionType;
-        typedef Dune::shared_ptr<const FunctionType> FunctionSharedPtr;
+        typedef std::shared_ptr<const FunctionType> FunctionSharedPtr;
 
         /**
          * \brief Construct an adaptor from VirtualFunction
diff --git a/dune/fufem/functions/vtkvirtualfunction.hh b/dune/fufem/functions/vtkvirtualfunction.hh
index 016806838632241f15a9928472a82b959d3cef18..a7ddb4c2e17acd796e179ec63778f4919924622e 100644
--- a/dune/fufem/functions/vtkvirtualfunction.hh
+++ b/dune/fufem/functions/vtkvirtualfunction.hh
@@ -3,6 +3,8 @@
 #ifndef VTK_VIRTUAL_FUNCTION_HH
 #define VTK_VIRTUAL_FUNCTION_HH
 
+#include <memory>
+
 #include <dune/grid/io/file/vtk/function.hh>
 
 #include <dune/fufem/functions/analyticgridfunction.hh>
@@ -73,7 +75,7 @@ public:
 
 private:
     const GV& gridview_;
-    const Dune::shared_ptr<const GF> wrappedFunction_;
+    const std::shared_ptr<const GF> wrappedFunction_;
     std::string s_;
 };
 #endif
diff --git a/dune/fufem/functiontools/basisidmapper.hh b/dune/fufem/functiontools/basisidmapper.hh
index 149ab4e9bbe9876e51731b33a8ec6a6718b4b122..69849d076627311ad7f9e03a49e95545bfb3e99a 100644
--- a/dune/fufem/functiontools/basisidmapper.hh
+++ b/dune/fufem/functiontools/basisidmapper.hh
@@ -1,7 +1,7 @@
 #ifndef BASIS_ID_MAPPER_HH
 #define BASIS_ID_MAPPER_HH
 
-#include <dune/common/shared_ptr.hh>
+#include <memory>
 
 #include <dune/common/fvector.hh>
 
@@ -42,7 +42,7 @@ class BasisIdMapper
         typedef typename GridView::Grid GridType;
         typedef typename GridType::template Codim<0>::Entity Element;
 
-        typedef typename Dune::shared_ptr<LocalFiniteElement> SmartFEPointer;
+        typedef typename std::shared_ptr<LocalFiniteElement> SmartFEPointer;
         typedef typename std::map<const LocalFiniteElement*, SmartFEPointer > StoredFEMap;
 
         //! get domain dimension from the grid
diff --git a/dune/fufem/functiontools/gridfunctionadaptor.hh b/dune/fufem/functiontools/gridfunctionadaptor.hh
index c94b4261587ebf50b03473662fd0c80d6ba0c5b1..bf4dd6022ef963974b471b824ae190239b105189 100644
--- a/dune/fufem/functiontools/gridfunctionadaptor.hh
+++ b/dune/fufem/functiontools/gridfunctionadaptor.hh
@@ -1,8 +1,10 @@
 #ifndef GRID_FUNCTION_ADAPTOR_HH
 #define GRID_FUNCTION_ADAPTOR_HH
 
+#include <memory>
 
 #include <dune/common/fvector.hh>
+#include <dune/common/shared_ptr.hh>
 
 #include <dune/istl/bvector.hh>
 
@@ -105,11 +107,11 @@ class GridFunctionAdaptor
         void update(const B& basis, bool copyBasis=true)
         {
             if (copyBasis)
-                basis_ = Dune::make_shared<Basis>(basis);
+                basis_ = std::make_shared<Basis>(basis);
             else
                 basis_ = Dune::stackobject_to_shared_ptr(basis);
 
-            idMapper_ = Dune::make_shared<const BasisIdMapper<B> > (*basis_, allowVanishingElements_);
+            idMapper_ = std::make_shared<const BasisIdMapper<B> > (*basis_, allowVanishingElements_);
 
             oldBasis_ = &basis;
             basisCopied_ = copyBasis;
@@ -189,8 +191,8 @@ class GridFunctionAdaptor
 
     private:
 
-        Dune::shared_ptr<const Basis> basis_;
-        Dune::shared_ptr<const BasisIdMapper<B> > idMapper_;
+        std::shared_ptr<const Basis> basis_;
+        std::shared_ptr<const BasisIdMapper<B> > idMapper_;
 
         const Basis* oldBasis_;
 
diff --git a/dune/fufem/functiontools/vtkbasiswriter.hh b/dune/fufem/functiontools/vtkbasiswriter.hh
index 39f7f33628e751081379ade05e8ac97c68550e7c..1cab62a72d89c5997335eb791e875ecd1f21bd07 100644
--- a/dune/fufem/functiontools/vtkbasiswriter.hh
+++ b/dune/fufem/functiontools/vtkbasiswriter.hh
@@ -1,8 +1,8 @@
 #ifndef VTK_BASIS_WRITER_HH
 #define VTK_BASIS_WRITER_HH
 
+#include <memory>
 
-#include <dune/common/shared_ptr.hh>
 #include <dune/istl/bvector.hh>
 #include <dune/grid/io/file/vtk/vtkwriter.hh>
 
@@ -30,7 +30,7 @@ class VTKBasisWriter :
         typedef typename Dune::VTKWriter<typename B::GridView> Base;
 
         typedef typename Dune::BlockVector<typename Dune::FieldVector<double,1> > BVector;
-        typedef typename Dune::shared_ptr<BVector> BVectorPtr;
+        typedef typename std::shared_ptr<BVector> BVectorPtr;
 
     public:
 
diff --git a/dune/fufem/makehalfcircle.hh b/dune/fufem/makehalfcircle.hh
index 06c08e7fd1c6ae7476f8d20a7c6f537dadf56e60..37c1e7ac6bca10b1e352833567d9632113c433ba 100644
--- a/dune/fufem/makehalfcircle.hh
+++ b/dune/fufem/makehalfcircle.hh
@@ -2,6 +2,7 @@
 #define MAKE_HALF_CIRCLE_HH
 
 #include <cmath>
+#include <memory>
 #include <vector>
 
 #include <dune/common/shared_ptr.hh>
@@ -72,7 +73,7 @@ GridType* createCircle(const Dune::FieldVector<double,2>& center, double r)
     // /////////////////////////////
     std::vector<unsigned int> vertices(2);
 
-    typedef typename Dune::shared_ptr<Dune::BoundarySegment<2> > SegmentPointer;
+    typedef typename std::shared_ptr<Dune::BoundarySegment<2> > SegmentPointer;
 
     vertices[0] = 0;  vertices[1] = 1;
     factory.insertBoundarySegment(vertices, SegmentPointer(new ArcOfCircle(center, r, M_PI*5/4, M_PI*7/4)));
@@ -113,7 +114,7 @@ void makeHalfCircle(GridType& grid)
 
     std::vector<unsigned int> vertices(2);
 
-    typedef typename Dune::shared_ptr<Dune::BoundarySegment<2> > SegmentPointer;
+    typedef typename std::shared_ptr<Dune::BoundarySegment<2> > SegmentPointer;
 
     vertices[0] = 1;  vertices[1] = 2;
     factory.insertBoundarySegment(vertices, SegmentPointer(new ArcOfCircle(center, 15, M_PI, M_PI*4/3)));
@@ -183,7 +184,7 @@ void makeHalfCircleQuadTri(GridType& grid)
 
     std::vector<unsigned int> vertices(2);
 
-    typedef typename Dune::shared_ptr<Dune::BoundarySegment<2> > SegmentPointer;
+    typedef typename std::shared_ptr<Dune::BoundarySegment<2> > SegmentPointer;
 
     vertices[0] = 1;  vertices[1] = 8;
     factory.insertBoundarySegment(vertices, SegmentPointer(new ArcOfCircle(center, 0.4, M_PI, M_PI*9/8)));
@@ -287,7 +288,7 @@ void makeHalfCircleQuad(GridType& grid)
 
     std::vector<unsigned int> vertices(2);
 
-    typedef typename Dune::shared_ptr<Dune::BoundarySegment<2> > SegmentPointer;
+    typedef typename std::shared_ptr<Dune::BoundarySegment<2> > SegmentPointer;
 
     vertices[0] = 1;  vertices[1] = 2;
     factory.insertBoundarySegment(vertices, SegmentPointer(new ArcOfCircle(center, 15, M_PI, M_PI*4/3)));
@@ -351,7 +352,7 @@ void makeHalfCircleThreeTris(GridType& grid)
 
     std::vector<unsigned int> vertices(2);
 
-    typedef typename Dune::shared_ptr<Dune::BoundarySegment<2> > SegmentPointer;
+    typedef typename std::shared_ptr<Dune::BoundarySegment<2> > SegmentPointer;
 
     vertices[0] = 1;  vertices[1] = 2;
     factory.insertBoundarySegment(vertices, SegmentPointer(new ArcOfCircle(center, 15, M_PI, M_PI*4/3)));
diff --git a/dune/fufem/makesphere.hh b/dune/fufem/makesphere.hh
index f18639ef5918b3d80082d69be5533b719d33262e..b0d3fd7c7242885cd009078b79aeacc6801d0303 100644
--- a/dune/fufem/makesphere.hh
+++ b/dune/fufem/makesphere.hh
@@ -2,6 +2,7 @@
 #define MAKE_SPHERE_HH
 
 #include <cmath>
+#include <memory>
 
 #include <dune/grid/uggrid.hh>
 #include <dune/grid/common/boundarysegment.hh>
@@ -123,7 +124,7 @@ void makeSphere(Dune::UGGrid<3>& grid,
         for (int j=0; j<3; j++)
             v[j] = segments[i][j];
 
-        Dune::shared_ptr<Dune::BoundarySegment<3> > boundarySegment(new SphereTriSegment(pos[v[0]], pos[v[1]], pos[v[2]], center, radius));
+        std::shared_ptr<Dune::BoundarySegment<3> > boundarySegment(new SphereTriSegment(pos[v[0]], pos[v[1]], pos[v[2]], center, radius));
         factory.insertBoundarySegment(v,boundarySegment);
 
         // /////////////////
@@ -194,7 +195,7 @@ void makeSphereOnOctahedron(Dune::UGGrid<3>& grid,
         for (int j=0; j<3; j++)
             v[j] = segments[i][j];
 
-        Dune::shared_ptr<Dune::BoundarySegment<3> > boundarySegment(new SphereTriSegment(pos[v[0]], pos[v[1]], pos[v[2]], center, radius));
+        std::shared_ptr<Dune::BoundarySegment<3> > boundarySegment(new SphereTriSegment(pos[v[0]], pos[v[1]], pos[v[2]], center, radius));
         factory.insertBoundarySegment(v, boundarySegment);
 
         // /////////////////
diff --git a/dune/fufem/python/conversion.hh b/dune/fufem/python/conversion.hh
index b34e9d85c3b000c53ce38f88edc112630ae2cda0..d4648ef3f1b0e02d5e298a0ed568c63898a50677 100644
--- a/dune/fufem/python/conversion.hh
+++ b/dune/fufem/python/conversion.hh
@@ -9,13 +9,13 @@
 
 #include <Python.h>
 
+#include <memory>
 #include <string>
 #include <sstream>
 #include <vector>
 #include <map>
 
 #include <dune/common/exceptions.hh>
-#include <dune/common/shared_ptr.hh>
 #include <dune/common/fvector.hh>
 #include <dune/common/parametertree.hh>
 #include <dune/common/typetraits.hh>
@@ -98,18 +98,18 @@ struct Conversion<char[i]>
 
 // conversion to shared_ptr
 template<class P>
-struct Conversion<Dune::shared_ptr<P> >
+struct Conversion<std::shared_ptr<P> >
 {
     enum {useDefaultConstructorConversion=true};
-    static void toC(PyObject* o, Dune::shared_ptr<P>& p)
+    static void toC(PyObject* o, std::shared_ptr<P>& p)
     {
         P* rawP;
         Conversion<P*>::toC(o, rawP);
-        p = Dune::shared_ptr<P>(rawP);
+        p = std::shared_ptr<P>(rawP);
     }
-    static PyObject* toPy(const Dune::shared_ptr<P>& x)
+    static PyObject* toPy(const std::shared_ptr<P>& x)
     {
-        DUNE_THROW(Dune::Exception, "Conversion from C type Dune::shared_ptr<" << typeid(P).name() << "> not implemented");
+        DUNE_THROW(Dune::Exception, "Conversion from C type std::shared_ptr<" << typeid(P).name() << "> not implemented");
         return 0;
     }
 };
@@ -310,7 +310,7 @@ struct Conversion<Dune::GridFactory<GridType> >
         typedef typename std::vector<unsigned int> Element;
         typedef typename std::vector<unsigned int> Face;
         typedef Dune::BoundarySegment<dim,dimworld> Segment;
-        typedef Dune::shared_ptr<Segment> SegmentPointer;
+        typedef std::shared_ptr<Segment> SegmentPointer;
 
         Reference grid(Imp::inc(pyGridRaw));
 
diff --git a/dune/fufem/sharedpointermap.hh b/dune/fufem/sharedpointermap.hh
index bf1ec38ff07dbabf61f3de48c3cd56febee7f823..4eb84a34fdaf0bf1aba75fbf77ec83dbd89dd2ca 100644
--- a/dune/fufem/sharedpointermap.hh
+++ b/dune/fufem/sharedpointermap.hh
@@ -1,13 +1,8 @@
 #ifndef SHARED_POINTER_MAP_HH
 #define SHARED_POINTER_MAP_HH
 
-
-
 #include <map>
-
-
-
-#include <dune/common/shared_ptr.hh>
+#include <memory>
 
 #include <dune/common/exceptions.hh>
 
@@ -23,9 +18,9 @@
  */
 template <class K, class V, class Compare = std::less<K> >
 class SharedPointerMap :
-    public std::map<K, Dune::shared_ptr<V>, Compare>
+    public std::map<K, std::shared_ptr<V>, Compare>
 {
-        typedef typename Dune::shared_ptr<V> VSP;
+        typedef typename std::shared_ptr<V> VSP;
 
     public:
         typedef typename std::map<K, VSP, Compare> Base;
diff --git a/dune/fufem/test/dunepythontest.cc b/dune/fufem/test/dunepythontest.cc
index 67541370cd0827e182f9ba35a4db71ee7e1d4839..c065455b8f5597d73402d1b76a6320a513282b3f 100644
--- a/dune/fufem/test/dunepythontest.cc
+++ b/dune/fufem/test/dunepythontest.cc
@@ -5,10 +5,10 @@
 #endif
 
 #include <map>
+#include <memory>
 #include <vector>
 
 #include <dune/common/parallel/mpihelper.hh>
-#include <dune/common/shared_ptr.hh>
 #include <dune/common/fvector.hh>
 #include <dune/common/function.hh>
 #include <dune/common/parametertree.hh>
@@ -702,7 +702,7 @@ int main(int argc, char** argv) try
         typedef Dune::FieldVector<double, 3> DT;
         typedef Dune::FieldVector<double, 2> RT;
         typedef Dune::VirtualFunction<DT, RT> Function;
-        typedef Dune::shared_ptr<Function> FunctionPointer;
+        typedef std::shared_ptr<Function> FunctionPointer;
         typedef std::map<std::string, FunctionPointer> FunctionMap;
 
         // Import dictionaries of callables to map of functions.