diff --git a/dune/tectonic/nicefunction.hh b/dune/tectonic/nicefunction.hh
index 6140a3977b6bed90d4a56e37fcbdc91408ad13ac..fecc7dd94f2c4c50fe7b8809a390ce8f1ee7eb77 100644
--- a/dune/tectonic/nicefunction.hh
+++ b/dune/tectonic/nicefunction.hh
@@ -16,13 +16,22 @@ class NiceFunction : public VirtualFunction<double, double> {
   virtual double rightDifferential(double s) const = 0;
 };
 
-class Identity : public NiceFunction {
+class LinearFunction : public NiceFunction {
 public:
-  void virtual evaluate(double const& x, double& y) const { y = x; }
+  LinearFunction() {}
 
-  double virtual leftDifferential(double s) const { return 1; }
+  LinearFunction(double a) : coefficient(a) {}
 
-  double virtual rightDifferential(double s) const { return 1; }
+  void virtual evaluate(double const& x, double& y) const {
+    y = coefficient * x;
+  }
+
+  double virtual leftDifferential(double s) const { return coefficient; }
+
+  double virtual rightDifferential(double s) const { return coefficient; }
+
+private:
+  double coefficient;
 };
 
 template <int slope> class SampleFunction : public NiceFunction {