diff --git a/src/fvMotionSolver/motionDiffusivity/inverseDistance/inverseDistanceDiffusivity.C b/src/fvMotionSolver/motionDiffusivity/inverseDistance/inverseDistanceDiffusivity.C
index 273e91e5dec469d46476ad7c2bf50b81eca71ad1..d628d09563df40f00612cf0d83562d0a97990713 100644
--- a/src/fvMotionSolver/motionDiffusivity/inverseDistance/inverseDistanceDiffusivity.C
+++ b/src/fvMotionSolver/motionDiffusivity/inverseDistance/inverseDistanceDiffusivity.C
@@ -3,7 +3,7 @@
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
     \\  /    A nd           | Copyright (C) 2011-2016 OpenFOAM Foundation
-     \\/     M anipulation  |
+     \\/     M anipulation  | Copyright (C) 2017 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -29,6 +29,7 @@ License
 #include "HashSet.H"
 #include "surfaceInterpolate.H"
 #include "zeroGradientFvPatchFields.H"
+#include "wallDist.H"
 
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
@@ -68,42 +69,18 @@ Foam::inverseDistanceDiffusivity::~inverseDistanceDiffusivity()
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-Foam::tmp<Foam::scalarField> Foam::inverseDistanceDiffusivity::y() const
-{
-    labelHashSet patchSet(mesh().boundaryMesh().patchSet(patchNames_));
-
-    if (patchSet.size())
-    {
-        return tmp<scalarField>
-        (
-            new scalarField(patchWave(mesh(), patchSet, false).distance())
-        );
-    }
-    else
-    {
-        return tmp<scalarField>(new scalarField(mesh().nCells(), 1.0));
-    }
-}
-
-
 void Foam::inverseDistanceDiffusivity::correct()
 {
-    volScalarField y_
-    (
-        IOobject
+    faceDiffusivity_ =
+        1.0
+       /fvc::interpolate
         (
-            "y",
-            mesh().time().timeName(),
-            mesh()
-        ),
-        mesh(),
-        dimless,
-        zeroGradientFvPatchScalarField::typeName
-    );
-    y_.primitiveFieldRef() = y();
-    y_.correctBoundaryConditions();
-
-    faceDiffusivity_ = 1.0/fvc::interpolate(y_);
+            wallDist::New
+            (
+                mesh(),
+                mesh().boundaryMesh().patchSet(patchNames_)
+            ).y()
+        );
 }
 
 
diff --git a/src/fvMotionSolver/motionDiffusivity/inverseDistance/inverseDistanceDiffusivity.H b/src/fvMotionSolver/motionDiffusivity/inverseDistance/inverseDistanceDiffusivity.H
index e5f6f3c9a56003b64d5b5efaa74ee752bf68be8e..05e5439479a1bf5bf98a9190cde70ca62f86d14d 100644
--- a/src/fvMotionSolver/motionDiffusivity/inverseDistance/inverseDistanceDiffusivity.H
+++ b/src/fvMotionSolver/motionDiffusivity/inverseDistance/inverseDistanceDiffusivity.H
@@ -3,7 +3,7 @@
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
     \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
-     \\/     M anipulation  |
+     \\/     M anipulation  | Copyright (C) 2017 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -60,8 +60,6 @@ class inverseDistanceDiffusivity
 
     // Private Member Functions
 
-        //- Return patch-cell-centre distance field
-        tmp<scalarField> y() const;
 
         //- Disallow default bitwise copy construct
         inverseDistanceDiffusivity(const inverseDistanceDiffusivity&);