diff --git a/dune/stuff/function/interface.hh b/dune/stuff/function/interface.hh
index 27566f3584e82f484fd35041ba93b29a09e387dc..c7661e2171efba5643b2c0bd66a06c439b4384e5 100644
--- a/dune/stuff/function/interface.hh
+++ b/dune/stuff/function/interface.hh
@@ -3,6 +3,10 @@
 
 #include <dune/common/fvector.hh>
 
+#if HAVE_EIGEN
+#include <Eigen/Core>
+#endif // HAVE_EIGEN
+
 #ifdef HAVE_DUNE_FEM
 #include <dune/fem/function/common/function.hh>
 #include <dune/fem/space/common/functionspace.hh>
@@ -35,6 +39,10 @@ public:
 
   virtual void evaluate(const DomainType&, RangeType&) const = 0;
 
+#if HAVE_EIGEN
+  virtual void evaluate(const Eigen::VectorXd&, Eigen::VectorXd&) const;
+#endif // HAVE_EIGEN
+
   RangeType evaluate(const DomainType& arg) const
   {
     RangeType ret;
@@ -43,7 +51,7 @@ public:
   }
 };
 
-#else
+#else // HAVE_DUNE_FEM
 
 /**
  *  \todo This should have been replaced by Dune::Function? Investigate further!
@@ -66,6 +74,10 @@ public:
 
   virtual void evaluate(const DomainType&, RangeType&) const = 0;
 
+#if HAVE_EIGEN
+  virtual void evaluate(const Eigen::VectorXd&, Eigen::VectorXd&) const;
+#endif // HAVE_EIGEN
+
   RangeType evaluate(const DomainType& arg) const
   {
     RangeType ret;