diff --git a/dune/gfe/globalgfetestfunction.hh b/dune/gfe/globalgfetestfunction.hh
index 48c503b13efe7748727e195180d467c54e2df90d..253bdb57c17bd891edc9d1952965d029f5fc8410 100644
--- a/dune/gfe/globalgfetestfunction.hh
+++ b/dune/gfe/globalgfetestfunction.hh
@@ -1,12 +1,12 @@
 #ifndef GLOBAL_GEODESIC_FINITE_ELEMENT_TEST_FUNCTION_HH
 #define GLOBAL_GEODESIC_FINITE_ELEMENT_TEST_FUNCTION_HH
 
+#include <array>
 #include <vector>
 #include <dune/istl/bvector.hh>
 
 #include <dune/common/fvector.hh>
 #include <dune/common/fmatrix.hh>
-#include <dune/common/array.hh>
 
 
 /** \brief Global geodesic finite element test function. 
@@ -69,7 +69,7 @@ void GlobalGFETestFunction<Basis,TargetSpace,CoefficientType>::evaluateLocal(con
                                                              EmbeddedTangentVector& out) const
 {
     // values of the test basis functions 
-    std::vector<Dune::array<EmbeddedTangentVector, tangentDim> > values;
+    std::vector<std::array<EmbeddedTangentVector, tangentDim> > values;
 
     // create local gfe test function
     basis_.getLocalFiniteElement(element).localBasis().evaluateFunction(local, values);
@@ -91,7 +91,7 @@ void GlobalGFETestFunction<Basis,TargetSpace,CoefficientType>::evaluateDerivativ
                                             Dune::FieldMatrix<ctype, embeddedDim, gridDim>& out) const
 {
     // jacobians of the test basis function  - a lot of dims here...
-    std::vector<Dune::array<Dune::FieldMatrix<ctype, embeddedDim, gridDim>, tangentDim> > refJacobians,jacobians; 
+    std::vector<std::array<Dune::FieldMatrix<ctype, embeddedDim, gridDim>, tangentDim> > refJacobians,jacobians;
 
     // evaluate local gfe test function basis
     basis_.getLocalFiniteElement(element).localBasis().evaluateJacobian(local, refJacobians);
diff --git a/dune/gfe/localgfetestfunctionbasis.hh b/dune/gfe/localgfetestfunctionbasis.hh
index d6a257cbfc39c60a00cdfd5f1e6b245fae2f06ff..ed1af0a3fd5045e7447325a8824ec258b9e88cf8 100644
--- a/dune/gfe/localgfetestfunctionbasis.hh
+++ b/dune/gfe/localgfetestfunctionbasis.hh
@@ -1,10 +1,10 @@
 #ifndef LOCAL_GFE_TEST_FUNCTION_HH
 #define LOCAL_GFE_TEST_FUNCTION_HH
 
+#include <array>
 #include <vector>
 
 #include <dune/common/fvector.hh>
-#include <dune/common/array.hh>
 #include <dune/geometry/type.hh>
 
 #include <dune/gfe/localgeodesicfefunction.hh>
diff --git a/dune/gfe/quaternion.hh b/dune/gfe/quaternion.hh
index 56c92b7890b2e2925529eb560f6d91d502eb7de3..e88ee526b91c423ecf7524dfcb1ba4a80c6663cd 100644
--- a/dune/gfe/quaternion.hh
+++ b/dune/gfe/quaternion.hh
@@ -2,7 +2,6 @@
 #define QUATERNION_HH
 
 #include <dune/common/fvector.hh>
-#include <dune/common/array.hh>
 #include <dune/common/fmatrix.hh>
 #include <dune/common/exceptions.hh>
 
diff --git a/dune/gfe/realtuple.hh b/dune/gfe/realtuple.hh
index 5921c9ea932aa34d6e24ae7d862d7eae5f98329c..64bb0ee931e2a47dda40c68be80b88cd9ca711a0 100644
--- a/dune/gfe/realtuple.hh
+++ b/dune/gfe/realtuple.hh
@@ -1,7 +1,6 @@
 #ifndef REAL_TUPLE_HH
 #define REAL_TUPLE_HH
 
-#include <dune/common/array.hh>
 #include <dune/common/fvector.hh>
 
 #include <dune/istl/scaledidmatrix.hh>
diff --git a/dune/gfe/rotation.hh b/dune/gfe/rotation.hh
index b4e2fce9b25d8e8706195575e0dae1aa2a061af0..619ac6e49c4137d0620119b7736f8f4115adfb7b 100644
--- a/dune/gfe/rotation.hh
+++ b/dune/gfe/rotation.hh
@@ -5,8 +5,9 @@
     \brief Define rotations in Euclidean spaces
 */
 
+#include <array>
+
 #include <dune/common/fvector.hh>
-#include <dune/common/array.hh>
 #include <dune/common/fmatrix.hh>
 #include <dune/common/exceptions.hh>
 
diff --git a/dune/gfe/tensor3.hh b/dune/gfe/tensor3.hh
index 4c0db93475db902afd9dd600f95c298f6335ed24..89cd648e4ad69de0c3506e0c9c04e9103bc026a4 100644
--- a/dune/gfe/tensor3.hh
+++ b/dune/gfe/tensor3.hh
@@ -5,7 +5,7 @@
     \brief A third-rank tensor
     */
 
-#include <dune/common/array.hh>
+#include <array>
 #include <dune/common/fmatrix.hh>
 
 /** \brief A third-rank tensor
diff --git a/dune/gfe/tensorssd.hh b/dune/gfe/tensorssd.hh
index a1f1fe7249471c58124d93e39c0b3befea0a108d..43680fe5e7283f00ba434c1a59de2b9cda2893e4 100644
--- a/dune/gfe/tensorssd.hh
+++ b/dune/gfe/tensorssd.hh
@@ -5,7 +5,8 @@
     \brief A third-rank tensor with two static (SS) and one dynamic (D) dimension
     */
 
-#include <dune/common/array.hh>
+#include <array>
+
 #include <dune/common/fmatrix.hh>
     
 /** \brief A third-rank tensor with two static (SS) and one dynamic (D) dimension
diff --git a/src/compute-disc-error.cc b/src/compute-disc-error.cc
index d2469707f1946e647de8875b45111fd630fbda97..f20f327c62da59a8facf668e7600b4f85e72b8ab 100644
--- a/src/compute-disc-error.cc
+++ b/src/compute-disc-error.cc
@@ -1,5 +1,7 @@
 #include <config.h>
 
+#include <array>
+
 #include <dune/common/parametertree.hh>
 #include <dune/common/parametertreeparser.hh>
 
@@ -344,7 +346,7 @@ int main (int argc, char *argv[]) try
     lower = parameterSet.get<FieldVector<double,dimworld> >("lower");
     upper = parameterSet.get<FieldVector<double,dimworld> >("upper");
 
-    array<unsigned int,dim> elements = parameterSet.get<array<unsigned int,dim> >("elements");
+    auto elements = parameterSet.get<std::array<unsigned int,dim> >("elements");
     grid = StructuredGridFactory<GridType>::createCubeGrid(lower, upper, elements);
     referenceGrid = StructuredGridFactory<GridType>::createCubeGrid(lower, upper, elements);
   }
diff --git a/src/gradient-flow.cc b/src/gradient-flow.cc
index c0f57032a28c4ee189bf6793bf60e434c138a7ee..e1fef548e43a092dbb18dd8fee57834ee5755eb1 100644
--- a/src/gradient-flow.cc
+++ b/src/gradient-flow.cc
@@ -7,6 +7,8 @@
 #include <adolc/adouble.h>
 #include <dune/fufem/utilities/adolcnamespaceinjections.hh>
 
+#include <array>
+
 #include <dune/common/bitsetvector.hh>
 #include <dune/common/parametertree.hh>
 #include <dune/common/parametertreeparser.hh>
@@ -122,7 +124,7 @@ int main (int argc, char *argv[]) try
     lower = parameterSet.get<FieldVector<double,dimworld> >("lower");
     upper = parameterSet.get<FieldVector<double,dimworld> >("upper");
 
-    elements = parameterSet.get<array<unsigned int,dim> >("elements");
+    elements = parameterSet.get<std::array<unsigned int,dim> >("elements");
     grid = StructuredGridFactory<GridType>::createCubeGrid(lower, upper, elements);
   }
   else
diff --git a/src/harmonicmaps.cc b/src/harmonicmaps.cc
index eb306a6ef6df07375bc5d8d6d1f0853312d804ca..b84095f9f51c6f1d9e2186fb758cee3e60092233 100644
--- a/src/harmonicmaps.cc
+++ b/src/harmonicmaps.cc
@@ -7,6 +7,8 @@
 #include <adolc/adouble.h>
 #include <dune/fufem/utilities/adolcnamespaceinjections.hh>
 
+#include <array>
+
 #include <dune/common/bitsetvector.hh>
 #include <dune/common/parametertree.hh>
 #include <dune/common/parametertreeparser.hh>
@@ -116,14 +118,14 @@ int main (int argc, char *argv[]) try
 
     shared_ptr<GridType> grid;
     FieldVector<double,dim> lower(0), upper(1);
-    array<unsigned int,dim> elements;
+    std::array<unsigned int,dim> elements;
 
     if (parameterSet.get<bool>("structuredGrid")) {
 
         lower = parameterSet.get<FieldVector<double,dim> >("lower");
         upper = parameterSet.get<FieldVector<double,dim> >("upper");
 
-        elements = parameterSet.get<array<unsigned int,dim> >("elements");
+        elements = parameterSet.get<std::array<unsigned int,dim> >("elements");
         grid = StructuredGridFactory<GridType>::createCubeGrid(lower, upper, elements);
 
     } else {
diff --git a/src/mixed-cosserat-continuum.cc b/src/mixed-cosserat-continuum.cc
index 1204d07c0c655baadfeb95fe8def3b8444d8af3b..2a71adc525db6971b0be1d1c8de2dbfe76816a09 100644
--- a/src/mixed-cosserat-continuum.cc
+++ b/src/mixed-cosserat-continuum.cc
@@ -10,6 +10,8 @@
 
 #include <dune/fufem/utilities/adolcnamespaceinjections.hh>
 
+#include <array>
+
 #include <dune/common/bitsetvector.hh>
 #include <dune/common/parametertree.hh>
 #include <dune/common/parametertreeparser.hh>
@@ -124,7 +126,7 @@ int main (int argc, char *argv[]) try
         lower = parameterSet.get<FieldVector<double,dim> >("lower");
         upper = parameterSet.get<FieldVector<double,dim> >("upper");
 
-        array<unsigned int,dim> elements = parameterSet.get<array<unsigned int,dim> >("elements");
+        auto elements = parameterSet.get<std::array<unsigned int,dim> >("elements");
         grid = StructuredGridFactory<GridType>::createCubeGrid(lower, upper, elements);
 
     } else {
diff --git a/test/globalgfetestfunctionbasistest.cc b/test/globalgfetestfunctionbasistest.cc
index 3f671495c2ec10cacf1d7bce9c88dc94dae2ecbf..beb1d7197b7c233dd603ebd2ff31243f93f39015 100644
--- a/test/globalgfetestfunctionbasistest.cc
+++ b/test/globalgfetestfunctionbasistest.cc
@@ -1,10 +1,10 @@
 #include <config.h>
 
 #include <fenv.h>
+#include <array>
 #include <iostream>
 
 #include <dune/common/fvector.hh>
-#include <dune/common/array.hh>
 
 #include <dune/fufem/functionspacebases/p1nodalbasis.hh>
 
@@ -50,7 +50,7 @@ void test()
         const typename GlobalBasis::LocalFiniteElement& lfe = basis.getLocalFiniteElement(*eIt);     
     
         FieldVector<double,1> stupidTestPoint(0);
-        std::vector<Dune::array<typename TargetSpace::EmbeddedTangentVector, TargetSpace::TangentVector::dimension> > values;
+        std::vector<std::array<typename TargetSpace::EmbeddedTangentVector, TargetSpace::TangentVector::dimension> > values;
         lfe.localBasis().evaluateFunction(stupidTestPoint, values);
         for(size_t i=0;i<values.size();i++) {
             std::cout<<values[i]<<std::endl;
diff --git a/test/localgfetestfunctiontest.cc b/test/localgfetestfunctiontest.cc
index e29447675f55d61cb716f29be2e0d83b6318f46c..dee684c72e298c63352e8df82b833b65b00a4489 100644
--- a/test/localgfetestfunctiontest.cc
+++ b/test/localgfetestfunctiontest.cc
@@ -2,9 +2,9 @@
 
 #include <fenv.h>
 #include <iostream>
+#include <array>
 
 #include <dune/common/fvector.hh>
-#include <dune/common/array.hh>
 #include <dune/localfunctions/lagrange/pqkfactory.hh>
 
 #include <dune/gfe/rotation.hh>
@@ -53,11 +53,11 @@ void test()
         FieldVector<double,domainDim> stupidTestPoint(0);
         
         // test whether evaluation of the shape functions works
-        std::vector<array<typename TargetSpace::EmbeddedTangentVector, TargetSpace::TangentVector::dimension> > values;
+        std::vector<std::array<typename TargetSpace::EmbeddedTangentVector, TargetSpace::TangentVector::dimension> > values;
         testFunctionSet.localBasis().evaluateFunction(stupidTestPoint, values);
 
         // test whether evaluation of the shape function derivatives works
-        std::vector<array<FieldMatrix<double, TargetSpace::EmbeddedTangentVector::dimension, domainDim>, TargetSpace::TangentVector::dimension> > derivatives;
+        std::vector<std::array<FieldMatrix<double, TargetSpace::EmbeddedTangentVector::dimension, domainDim>, TargetSpace::TangentVector::dimension> > derivatives;
         testFunctionSet.localBasis().evaluateJacobian(stupidTestPoint, derivatives);
 
     }