diff --git a/.gitignore b/.gitignore
index d756843b3efeb1892a570843f8b783cd729df830..6a99568508c5be2bbcf80ea3515a19e81178f5b8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,2 @@
 build-cmake
+.fuse_hidden*
diff --git a/dune/mmdg/dg.hh b/dune/mmdg/dg.hh
index 4ee978c8f4e72c4eda06dadf5b40faddce54f452..395ca14d83faff76c9fe07300860235256bea5b9 100644
--- a/dune/mmdg/dg.hh
+++ b/dune/mmdg/dg.hh
@@ -57,9 +57,6 @@ private:
   //assemble stiffness matrix A and load vector b
   void assembleSLE (const Scalar K, const Scalar mu)
   {
-    //NOTE:
-    //const int order = 3; //order of the quadrature rule
-
     //we use the basis
     // phi_elem,0 (x) = indicator(elem);
     // phi_elem,i (x) = x[i]*indicator(elem);
@@ -77,29 +74,29 @@ private:
       //basis function phi_elem,i
       const int elemIdxSLE = (dim + 1)*elemIdx;
 
-  /*    //TODO: can be done outside of the loop?
+/*      //TODO: can be done outside of the loop?
       const Dune::QuadratureRule<double,dim>& rule =
-        Dune::QuadratureRules<double,dim>::rule(geo.type(),order);
+        Dune::QuadratureRules<double,dim>::rule(geo.type(), problem_.quadratureOrder());
+      Dune::FieldVector<double, dim+1> update(0.0);
 
       //NOTE: how are quadrature rules in Dune applied correctly?
       for (const auto& ip : rule)
       {
-        const auto qp = ip.position();
+        const auto& qp = ip.position();
         //NOTE: is the volume of the element taken into account
         //automatically?
-        const auto weight = ip.weight();
+        const double weight = ip.weight();
 
         //quadrature for int_elem q*phi_elem,0 dV
-        b[elemIdxSLE] += weight * q(qp);
+        b[elemIdxSLE] += weight * problem_.q(qp);
 
         //quadrature for int_elem q*phi_elem,i dV
         for (int i = 0; i < dim; i++)
         {
-          b[elemIdxSLE + i + 1] += weight * qp[i] * q(qp);
+          b[elemIdxSLE + i + 1] += weight * qp[i] * problem_.q(qp);
         }
       }
-  */
-
+*/
       //NOTE: makeshift solution for source term q = -1
       b[elemIdxSLE] += -elemVol;
       for (int i = 0; i < dim; i++)
diff --git a/dune/mmdg/problems/dgproblem.hh b/dune/mmdg/problems/dgproblem.hh
index f5374154a202163a44653160715ac1a10af845a3..c7ffb3d239d627d0ab76f648b316eb1d658fb416 100644
--- a/dune/mmdg/problems/dgproblem.hh
+++ b/dune/mmdg/problems/dgproblem.hh
@@ -17,7 +17,7 @@ class DGProblem
     }
 
     //indicates whether an exact solution is implemented for the problem
-    virtual bool hasExactSolution() const
+    virtual bool hasExactSolution () const
     {
       return false;
     };
@@ -33,6 +33,13 @@ class DGProblem
     {
       return Scalar(0.0);
     }
+
+    //returns the recommended quadrature order to compute an integral
+    //over x * q(x)
+    virtual int quadratureOrder () const
+    {
+      return 1;
+    }
 };
 
 #endif
diff --git a/src/dg.cc b/src/dg.cc
index e087fd03ebec52cf0af6a3a6be49fa97cf5b8e92..8a50902881a79002dffe90694f1558b27ac42c66 100644
--- a/src/dg.cc
+++ b/src/dg.cc
@@ -23,6 +23,9 @@
 #include <dune/mmdg/problems/dgproblem.hh>
 #include <dune/mmdg/problems/poisson.hh>
 
+
+//TODO: specify K in problem? exact solution depends on K!
+
 int main(int argc, char** argv)
 {
   try