diff --git a/dune/mmdg/dg.hh b/dune/mmdg/dg.hh
index 7a0043a3a18c44cf13d124a5bf977e241e2ae12b..80d2b0205eb540474c6d7c93198c1f5534e08d3d 100644
--- a/dune/mmdg/dg.hh
+++ b/dune/mmdg/dg.hh
@@ -36,6 +36,17 @@ public:
 
     //NOTE:
 //    const int order = 3; //order of the quadrature rule
+    for(const auto& elem : elements(gridView_))
+    {
+      const auto& geo = elem.geometry();
+      std::cout << mapper_.index(elem) << "\t";
+      for (int k = 0; k < geo.corners(); k++)
+      {
+        std::cout << geo.corner(k) << "\t";
+      }
+      std::cout << "\n\n";
+    }
+
 
     //we use the basis
     // phi_elem,0 (x) = indicator(elem);
@@ -48,6 +59,13 @@ public:
       const double elemVol = geo.volume();
       const auto& center = geo.center();
 
+      std::cout << "===============================\nElement " << elemIdx;
+      for (int k = 0; k < geo.corners(); k++)
+      {
+        std::cout << "\t" << geo.corner(k);
+      }
+      std::cout << "\n\n";
+
       //in the system of linear equations (SLE) Ad = b,
       //the index elemIdxSLE refers to the basis function phi_elem,0
       //and the indices elemIdxSLE + i + 1, i = 1,...,dim, refer to the
@@ -99,6 +117,13 @@ public:
         const double intersctVol = intersctGeo.volume();
         const auto& intersctCenter = intersctGeo.center();
 
+        std::cout << "+++++++++++++++++++++++++++\nIntersection ";
+        for (int k = 0; k < intersctGeo.corners(); k++)
+        {
+          std::cout << "\t" << intersctGeo.corner(k);
+        }
+        std::cout << "\n\n";
+
         //TODO: quadrature rule cannot be used for dim = 1!
 //        const Dune::QuadratureRule<double,dim-1>& secondOrderRule =
 //          Dune::QuadratureRules<double,dim-1>::rule(
@@ -121,11 +146,22 @@ public:
           {
             const auto& leftCorner = intersctGeo.corner(0);
             const auto& rightCorner = intersctGeo.corner(1);
+            std::cout << "left corner: " << leftCorner << "\tright corner: " << rightCorner << "\n";
+
             quadraticIntregrals[i][j] = intersctVol / 3 *
               ( leftCorner[i] * leftCorner[j] +
                 rightCorner[i] * rightCorner[j]
               + 0.5 * (leftCorner[i] * rightCorner[j] +
                 leftCorner[j] * rightCorner[i]) );
+
+            std::cout << i << ", " << j << "\t" << leftCorner[i] * leftCorner[j] << "\t" <<
+              rightCorner[i] * rightCorner[j] << "\t" <<
+              0.5 * (leftCorner[i] * rightCorner[j] +
+              leftCorner[j] * rightCorner[i]) << "\t" << intersctVol / 3 *
+                ( leftCorner[i] * leftCorner[j] +
+                  rightCorner[i] * rightCorner[j]
+                + 0.5 * (leftCorner[i] * rightCorner[j] +
+                  leftCorner[j] * rightCorner[i]) ) << "\t" << quadraticIntregrals[i][j] << "\n\n";
   /*
             //use second order quadrature rule for exact evaluation of
             // int_intersct x_i*x_j ds
@@ -141,6 +177,8 @@ public:
             quadraticIntregrals[i][j] = quadraticIntregrals[j][i];
           }
         }
+        std::cout << "linearIntegrals:\n" << linearIntegrals << "\n\n";
+        std::cout << "quadraticIntregrals:\n" << quadraticIntregrals << "\n\n";
 
         //exact evaluation of
         // int_intersct mu*jump(phi_elem,0)*jump(phi_elem,0) ds
@@ -150,6 +188,14 @@ public:
 
         if (intersct.neighbor()) //intersct has neighboring element
         {
+          std::cout << "------------------------------\nNeighbor\t";
+          for (int k = 0; k < intersct.outside().geometry().corners(); k++)
+          {
+            std::cout << "\t" << intersct.outside().geometry().corner(k);
+          }
+          std::cout << "\n\n";
+
+
           //index of the neighboring element
           const int neighborIdx = mapper_.index(intersct.outside());
           const int neighborIdxSLE = (dim + 1)*neighborIdx;
@@ -298,6 +344,7 @@ public:
         }
         else //boundary facet
         {
+          std::cout << "------------------------------\nBoundary\n\n";
           for (int i = 0; i < dim; i++)
           { //we use the relations
             // int_intersct mu*jump(phi_elem,0)*jump(phi_elem,i) ds
@@ -364,10 +411,10 @@ public:
             std::cout << i << ", " << j << std::endl;
 
     //NOTE: dim = 1
-    auto exactSolution = [](const auto& pos) {return 0.5*pos[0]*(pos[0] - 1);};
+//    auto exactSolution = [](const auto& pos) {return 0.5*pos[0]*(pos[0] - 1);};
 
     //NOTE: dim = 2
-/*    auto exactSolution = [](const auto& pos)
+    auto exactSolution = [](const auto& pos)
       {
         double solution = 0.0;
         for (int m = 1; m <= 21; m = m + 2)
@@ -381,7 +428,7 @@ public:
         solution *= -16 / pow(M_PI, 4);
         return solution;
       };
-*/
+