diff --git a/dumux/discretization/staggered/freeflow/fourierslaw.hh b/dumux/discretization/staggered/freeflow/fourierslaw.hh
index 3b75dd2baae82afad231070187c7bdbc51698f2c..06214e09f3f60b8f69310daaea7935570b427893 100644
--- a/dumux/discretization/staggered/freeflow/fourierslaw.hh
+++ b/dumux/discretization/staggered/freeflow/fourierslaw.hh
@@ -57,8 +57,8 @@ class FouriersLawImplementation<TypeTag, DiscretizationMethods::Staggered >
     using ElementVolumeVariables = typename GET_PROP_TYPE(TypeTag, ElementVolumeVariables);
     using Element = typename GridView::template Codim<0>::Entity;
     using CellCenterPrimaryVariables = typename GET_PROP_TYPE(TypeTag, CellCenterPrimaryVariables);
-    using ThermalConductivityModel = typename GET_PROP_TYPE(TypeTag, ThermalConductivityModel);
     using Indices = typename GET_PROP_TYPE(TypeTag, Indices);
+    using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
 
     static const int dim = GridView::dimension;
     static const int dimWorld = GridView::dimensionworld;
@@ -90,15 +90,16 @@ public:
         const auto& outsideVolVars = scvf.boundary() ?  insideVolVars : elemVolVars[scvf.outsideScvIdx()];
 
         // effective conductivity tensors
-        auto insideLambda = ThermalConductivityModel::effectiveThermalConductivity(insideVolVars, problem.spatialParams(), element, fvGeometry, insideScv);
-        auto outsideLambda = ThermalConductivityModel::effectiveThermalConductivity(outsideVolVars, problem.spatialParams(), element, fvGeometry, outsideScv);
+        auto insideLambda = insideVolVars.thermalConductivity();
+        auto outsideLambda = outsideVolVars.thermalConductivity();
 
         // scale by extrusion factor
         insideLambda *= insideVolVars.extrusionFactor();
         outsideLambda *= outsideVolVars.extrusionFactor();
 
         // the resulting averaged conductivity tensor
-        const auto lambda = problem.spatialParams().harmonicMean(insideLambda, outsideLambda, scvf.unitOuterNormal());
+//        const auto lambda = problem.spatialParams().harmonicMean(insideLambda, outsideLambda, scvf.unitOuterNormal());
+        const auto lambda = harmonicMean(insideLambda, outsideLambda); // TODO unitOuterNormal?!
 
         const Scalar insideTemp = insideVolVars.temperature();
         Scalar distance(0.0), outsideTemp(insideTemp);
@@ -118,13 +119,13 @@ public:
         }
         else
         {
-            distance = (insideScv.dofPosition() - outsideScv.dofPosition());
+            distance = (insideScv.dofPosition() - outsideScv.dofPosition()).two_norm();
             outsideTemp = outsideVolVars.temperature();
         }
 
-        flux[energyBalanceIdx] = (insideTemp - outsideTemp);
+        flux[energyBalanceIdx] = -1.0 * (insideTemp - outsideTemp);
         flux[energyBalanceIdx] *= lambda / distance;
-        return -1.0*flux;
+        return flux;
     }
 };
 } // end namespace