diff --git a/dumux/discretization/box/maxwellstefanslaw.hh b/dumux/discretization/box/maxwellstefanslaw.hh
index ae4a2327202352c9fd44e3fe15da9716c98c0e69..8f1b0f7b91e6f0e4bdb8b3b032f149e2e34e98b2 100644
--- a/dumux/discretization/box/maxwellstefanslaw.hh
+++ b/dumux/discretization/box/maxwellstefanslaw.hh
@@ -151,86 +151,65 @@ private:
                                                 const int phaseIdx,
                                                 const ComponentFluxVector moleFrac)
     {
-
         ReducedComponentMatrix reducedDiffusionMatrix(0.0);
 
         const auto& insideVolVars = elemVolVars[scvf.insideScvIdx()];
         const auto& outsideVolVars = elemVolVars[scvf.outsideScvIdx()];
         const auto insideScvIdx = scvf.insideScvIdx();
         const auto outsideScvIdx = scvf.outsideScvIdx();
+
         //this is to not devide by 0 if the saturation in 0 and the effectiveDiffusivity becomes zero due to that
-       if(insideVolVars.saturation(phaseIdx) == 0 || outsideVolVars.saturation(phaseIdx) == 0)
+        if(insideVolVars.saturation(phaseIdx) == 0 || outsideVolVars.saturation(phaseIdx) == 0)
             return reducedDiffusionMatrix;
 
-         for (int compIIdx = 0; compIIdx < numComponents-1; compIIdx++)
-            {
-                // effective diffusion tensors
-                using EffDiffModel = typename GET_PROP_TYPE(TypeTag, EffectiveDiffusivityModel);
-
-                const auto xi = moleFrac[compIIdx];
+        for (int compIIdx = 0; compIIdx < numComponents-1; compIIdx++)
+        {
+            // effective diffusion tensors
+            using EffDiffModel = typename GET_PROP_TYPE(TypeTag, EffectiveDiffusivityModel);
 
-                //calculate diffusivity for i,numComponents
+            const auto xi = moleFrac[compIIdx];
 
-                auto tinInside = getDiffusionCoefficient(phaseIdx, compIIdx, numComponents-1, problem, element, insideVolVars, fvGeometry.scv(insideScvIdx));
-                tinInside = EffDiffModel::effectiveDiffusivity(insideVolVars.porosity(), insideVolVars.saturation(phaseIdx), tinInside);
-                auto tinOutside = getDiffusionCoefficient(phaseIdx, compIIdx, numComponents-1, problem, element, outsideVolVars, fvGeometry.scv(outsideScvIdx));
-                tinOutside = EffDiffModel::effectiveDiffusivity(insideVolVars.porosity(), insideVolVars.saturation(phaseIdx), tinOutside);
+            //calculate diffusivity for i,numComponents
+            auto tinInside = getDiffusionCoefficient(phaseIdx, compIIdx, numComponents-1, problem, element, insideVolVars, fvGeometry.scv(insideScvIdx));
+            tinInside = EffDiffModel::effectiveDiffusivity(insideVolVars.porosity(), insideVolVars.saturation(phaseIdx), tinInside);
+            auto tinOutside = getDiffusionCoefficient(phaseIdx, compIIdx, numComponents-1, problem, element, outsideVolVars, fvGeometry.scv(outsideScvIdx));
+            tinOutside = EffDiffModel::effectiveDiffusivity(insideVolVars.porosity(), insideVolVars.saturation(phaseIdx), tinOutside);
 
                             // scale by extrusion factor
-                tinInside *= insideVolVars.extrusionFactor();
-                tinOutside *= outsideVolVars.extrusionFactor();
+            tinInside *= insideVolVars.extrusionFactor();
+            tinOutside *= outsideVolVars.extrusionFactor();
+
+            // the resulting averaged diffusion tensor
+            const auto tin = problem.spatialParams().harmonicMean(tinInside, tinOutside, scvf.unitOuterNormal());
+
+            //begin the entrys of the diffusion matrix of the diagonal
+            reducedDiffusionMatrix[compIIdx][compIIdx] += xi/tin;
+
+            // now set the rest of the entries (off-diagonal and additional entries for diagonal)
+            for (int compJIdx = 0; compJIdx < numComponents-1; compJIdx++)
+            {
+                //we don't want to calculate e.g. water in water diffusion
+                if (compIIdx == compJIdx)
+                    continue;
+
+                //calculate diffusivity for compIIdx, compJIdx
+                const auto xj = moleFrac[compJIdx];
+                auto tijInside = getDiffusionCoefficient(phaseIdx, compIIdx, compJIdx, problem, element, insideVolVars, fvGeometry.scv(insideScvIdx));
+                tijInside = EffDiffModel::effectiveDiffusivity(insideVolVars.porosity(), insideVolVars.saturation(phaseIdx), tijInside);
+                auto tijOutside = getDiffusionCoefficient(phaseIdx, compIIdx, compJIdx, problem, element, outsideVolVars, fvGeometry.scv(outsideScvIdx));
+                tijOutside = EffDiffModel::effectiveDiffusivity(insideVolVars.porosity(), outsideVolVars.saturation(phaseIdx), tijOutside);
+
+                // scale by extrusion factor
+                tijInside *= insideVolVars.extrusionFactor();
+                tijOutside *= outsideVolVars.extrusionFactor();
 
                 // the resulting averaged diffusion tensor
-                const auto tin = problem.spatialParams().harmonicMean(tinInside, tinOutside, scvf.unitOuterNormal());
-
-                //set the entrys of the diffusion matrix of the diagonal
-                reducedDiffusionMatrix[compIIdx][compIIdx] += xi/tin;
-
-                for (int compkIdx = 0; compkIdx < numComponents; compkIdx++)
-                {
-                    if (compkIdx == compIIdx)
-                                continue;
-
-                    const auto xk = moleFrac[compkIdx];
-
-                    auto tikInside = getDiffusionCoefficient(phaseIdx, compIIdx, compkIdx, problem, element, insideVolVars, fvGeometry.scv(insideScvIdx));
-                    tikInside = EffDiffModel::effectiveDiffusivity(insideVolVars.porosity(), insideVolVars.saturation(phaseIdx), tikInside);
-                    auto tikOutside = getDiffusionCoefficient(phaseIdx, compIIdx, compkIdx, problem, element, outsideVolVars, fvGeometry.scv(outsideScvIdx));
-                    tikOutside = EffDiffModel::effectiveDiffusivity(insideVolVars.porosity(), insideVolVars.saturation(phaseIdx), tikOutside);
-
-                    // scale by extrusion factor
-                    tikInside *= insideVolVars.extrusionFactor();
-                    tikOutside *= outsideVolVars.extrusionFactor();
-
-                    // the resulting averaged diffusion tensor
-                    const auto tik = problem.spatialParams().harmonicMean(tikInside, tikOutside, scvf.unitOuterNormal());
-
-                    reducedDiffusionMatrix[compIIdx][compIIdx] += xk/tik;
-                }
-
-                // now set the rest of the entries (off-diagonal)
-                for (int compJIdx = 0; compJIdx < numComponents-1; compJIdx++)
-                {
-                    //we don't want to calculate e.g. water in water diffusion
-                    if (compIIdx == compJIdx)
-                        continue;
-                    //calculate diffusivity for compIIdx, compJIdx
-                    auto tijInside = getDiffusionCoefficient(phaseIdx, compIIdx, compJIdx, problem, element, insideVolVars, fvGeometry.scv(insideScvIdx));
-                    tijInside = EffDiffModel::effectiveDiffusivity(insideVolVars.porosity(), insideVolVars.saturation(phaseIdx), tijInside);
-                    auto tijOutside = getDiffusionCoefficient(phaseIdx, compIIdx, compJIdx, problem, element, outsideVolVars, fvGeometry.scv(outsideScvIdx));
-                    tijOutside = EffDiffModel::effectiveDiffusivity(insideVolVars.porosity(), outsideVolVars.saturation(phaseIdx), tijOutside);
-
-                    // scale by extrusion factor
-                    tijInside *= insideVolVars.extrusionFactor();
-                    tijOutside *= outsideVolVars.extrusionFactor();
-
-                    // the resulting averaged diffusion tensor
-                    const auto tij = problem.spatialParams().harmonicMean(tijInside, tijOutside, scvf.unitOuterNormal());
-
-                    reducedDiffusionMatrix[compIIdx][compJIdx] +=xi*(1/tin - 1/tij);
-                }
-            }
+                const auto tij = problem.spatialParams().harmonicMean(tijInside, tijOutside, scvf.unitOuterNormal());
 
+                reducedDiffusionMatrix[compIIdx][compIIdx] += xj/tij;
+                reducedDiffusionMatrix[compIIdx][compJIdx] +=xi*(1/tin - 1/tij);
+            }
+        }
         return reducedDiffusionMatrix;
     }
 
diff --git a/dumux/discretization/cellcentered/tpfa/maxwellstefanslaw.hh b/dumux/discretization/cellcentered/tpfa/maxwellstefanslaw.hh
index cdf5a579f399ca76a66e7cbad21b3f153dacc087..ad226ea7baeaa86908cab08f1f95fc21ec12179a 100644
--- a/dumux/discretization/cellcentered/tpfa/maxwellstefanslaw.hh
+++ b/dumux/discretization/cellcentered/tpfa/maxwellstefanslaw.hh
@@ -120,8 +120,8 @@ public:
             const auto insideScvIdx = scvf.insideScvIdx();
             const auto& insideScv = fvGeometry.scv(insideScvIdx);
             const Scalar omegai = calculateOmega_(scvf,
-                                                insideScv,
-                                                insideVolVars.extrusionFactor());
+                                                  insideScv,
+                                                  insideVolVars.extrusionFactor());
 
             //now we have to do the tpfa: J_i = J_j which leads to: tij(xi -xj) = -rho Bi^-1 omegai(x*-xi) with x* = (omegai Bi^-1 + omegaj Bj^-1)^-1 (xi omegai Bi^-1 + xj omegaj Bj^-1) with i inside and j outside
             reducedDiffusionMatrixInside = setupMSMatrix_(problem, element, fvGeometry, insideVolVars, insideScv, phaseIdx);
@@ -132,8 +132,6 @@ public:
                 moleFracOutside -= moleFracInside;
                 reducedDiffusionMatrixInside.solve(reducedFlux, moleFracOutside);
                 reducedFlux *= omegai;
-
-
             }
             else //we need outside cells as well if we are not on the boundary
             {
@@ -146,12 +144,12 @@ public:
                 if (dim == dimWorld)
                     // assume the normal vector from outside is anti parallel so we save flipping a vector
                     omegaj = -1.0*calculateOmega_(scvf,
-                                            outsideScv,
-                                            outsideVolVars.extrusionFactor());
+                                                  outsideScv,
+                                                  outsideVolVars.extrusionFactor());
                 else
                     omegaj = calculateOmega_(fvGeometry.flipScvf(scvf.index()),
-                                            outsideScv,
-                                            outsideVolVars.extrusionFactor());
+                                             outsideScv,
+                                             outsideVolVars.extrusionFactor());
 
                 reducedDiffusionMatrixInside.invert();
                 reducedDiffusionMatrixOutside.invert();
@@ -204,11 +202,11 @@ private:
     }
 
     static ReducedComponentMatrix setupMSMatrix_(const Problem& problem,
-                                                const Element& element,
-                                                const FVElementGeometry& fvGeometry,
-                                                const VolumeVariables& volVars,
-                                                const SubControlVolume& scv,
-                                                const int phaseIdx)
+                                                 const Element& element,
+                                                 const FVElementGeometry& fvGeometry,
+                                                 const VolumeVariables& volVars,
+                                                 const SubControlVolume& scv,
+                                                 const int phaseIdx)
     {
         ReducedComponentMatrix reducedDiffusionMatrix(0.0);
 
@@ -219,33 +217,24 @@ private:
         for (int compIIdx = 0; compIIdx < numComponents-1; compIIdx++)
         {
             const auto xi = volVars.moleFraction(phaseIdx, compIIdx);
-
-            //calculate diffusivity for i,numComponents
             Scalar tin = getDiffusionCoefficient(phaseIdx, compIIdx, numComponents-1, problem, element, volVars, scv);
             tin = EffDiffModel::effectiveDiffusivity(volVars.porosity(), volVars.saturation(phaseIdx), tin);
-            //set the entrys of the diffusion matrix of the diagonal
-            reducedDiffusionMatrix[compIIdx][compIIdx] += xi/tin;
-            for (int compkIdx = 0; compkIdx < numComponents; compkIdx++)
-            {
-                if (compkIdx == compIIdx)
-                            continue;
 
-                const auto xk = volVars.moleFraction(phaseIdx, compkIdx);
-                Scalar tik = getDiffusionCoefficient(phaseIdx, compIIdx, compkIdx, problem, element, volVars, scv);
-                tik = EffDiffModel::effectiveDiffusivity(volVars.porosity(), volVars.saturation(phaseIdx), tik);
-                reducedDiffusionMatrix[compIIdx][compIIdx] += xk/tik;
-            }
+            // set the entries of the diffusion matrix of the diagonal
+            reducedDiffusionMatrix[compIIdx][compIIdx] += xi/tin;
 
-            // now set the rest of the entries (off-diagonal)
-            for (int compJIdx = 0; compJIdx < numComponents-1; compJIdx++)
+            // now set the rest of the entries (off-diagonal and additional entries for diagonal)
+            for (int compJIdx = 0; compJIdx < numComponents; compJIdx++)
             {
-                //we don't want to calculate e.g. water in water diffusion
-                if (compIIdx == compJIdx)
+                // we don't want to calculate e.g. water in water diffusion
+                if (compJIdx == compIIdx)
                     continue;
-                //calculate diffusivity for compIIdx, compJIdx
+
+                const auto xj = volVars.moleFraction(phaseIdx, compJIdx);
                 Scalar tij = getDiffusionCoefficient(phaseIdx, compIIdx, compJIdx, problem, element, volVars, scv);
                 tij = EffDiffModel::effectiveDiffusivity(volVars.porosity(), volVars.saturation(phaseIdx), tij);
-                reducedDiffusionMatrix[compIIdx][compJIdx] +=xi*(1/tin - 1/tij);
+                reducedDiffusionMatrix[compIIdx][compIIdx] += xj/tij;
+                reducedDiffusionMatrix[compIIdx][compJIdx] += xi*(1/tin - 1/tij);
             }
         }
         return reducedDiffusionMatrix;