diff --git a/dune/solvers/transferoperators/genericmultigridtransfer.hh b/dune/solvers/transferoperators/genericmultigridtransfer.hh
index 60413e466d4261ecae5e5bc08a941c3d800a07a3..8fe413ca273f7364de06c8451c3bc892a7c39ee6 100644
--- a/dune/solvers/transferoperators/genericmultigridtransfer.hh
+++ b/dune/solvers/transferoperators/genericmultigridtransfer.hh
@@ -33,27 +33,6 @@ class GenericMultigridTransfer {
     template <class DT, class RT, int dim>
     struct P1ElementFactory {
 
-#ifdef DUNE_VIRTUAL_SHAPEFUNCTIONS
-        typedef Dune::LocalFiniteElementInterface<DT, RT, dim> type;
-
-        const type* get(const Dune::GeometryType& gt) {
-            if (gt.isSimplex())
-                return &simplexBaseSet_;
-            else if (gt.isCube())
-                return &cubeBaseSet_;
-            else if (gt.isPrism())
-                // This cast is necessary because otherwise the code wouldn't compile for dim!=3
-                return (Dune::LocalFiniteElementInterface<DT, RT, dim>*)&prismBaseSet_;
-            else
-                DUNE_THROW(Dune::NotImplemented, "transfer operators for " << gt);
-        }
-
-    private:
-        Dune::P1LocalFiniteElement<DT, RT, dim> simplexBaseSet_;
-        Dune::Q1LocalFiniteElement<DT, RT, dim> cubeBaseSet_;
-        Dune::PrismP1LocalFiniteElement<DT, RT> prismBaseSet_;
-#else
-
     private:
         // extract LocalBasisTraits from P1LocalFiniteElement
         typedef typename Dune::P1LocalFiniteElement<DT, RT, dim>::Traits::LocalBasisType::Traits P1LocalBasisTraits;
@@ -80,8 +59,6 @@ class GenericMultigridTransfer {
         Dune::LocalFiniteElementVirtualImp<Dune::P1LocalFiniteElement<DT, RT, dim> > simplexBaseSet_;
         Dune::LocalFiniteElementVirtualImp<Dune::Q1LocalFiniteElement<DT, RT, dim> > cubeBaseSet_;
         Dune::LocalFiniteElementVirtualImp<Dune::PrismP1LocalFiniteElement<DT, RT> > prismBaseSet_;
-#endif
-
     };
 
 public: