diff --git a/include/optimizer.h b/include/optimizer.h
index 0eb9cf5ccb814b58d4dc338aecc20e5cfe70ee6b..6aa23d6050a43df7155bae4aa20c4385698e3be5 100644
--- a/include/optimizer.h
+++ b/include/optimizer.h
@@ -23,13 +23,15 @@ template <typename argtype, typename valtype> class Optimizer {
 */
 class GradientDescent : public Optimizer<double, double> {
   public:
-    GradientDescent(double _stepsize) : stepsize(_stepsize) {}
+    GradientDescent(Differentiator<double, double>& _diff, double _stepsize)
+        : diff(_diff), stepsize(_stepsize) {}
 
     Coordinate<double> optimize(Function<Coordinate<double>, double>& func,
                                 Coordinate<double>& start,
                                 double precision) const override;
 
   protected:
+    Differentiator<double, double>& diff;
     double stepsize;
 };