diff --git a/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/DelaunayMesh/DelaunayMesh.C b/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/DelaunayMesh/DelaunayMesh.C
index 39626ceafa1abddd58102f9b262942ffa2c337b4..5af8ac6d4ced03ba0777a5b6dd6d7e6013559928 100644
--- a/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/DelaunayMesh/DelaunayMesh.C
+++ b/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/DelaunayMesh/DelaunayMesh.C
@@ -25,7 +25,7 @@ License
 
 #include "DelaunayMesh.H"
 #include "polyMesh.H"
-#include "labelPair.H"
+#include "labelPairHashes.H"
 #include "PrintTable.H"
 #include "pointIOField.H"
 #include "scalarIOField.H"
diff --git a/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/DelaunayMesh/DelaunayMesh.H b/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/DelaunayMesh/DelaunayMesh.H
index 865b3108fe173cfd6e1764010c98d2c52027f232..7c92f8acff04e6a823e0bb74dc069a2885a1f0f2 100644
--- a/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/DelaunayMesh/DelaunayMesh.H
+++ b/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/DelaunayMesh/DelaunayMesh.H
@@ -37,9 +37,7 @@ SourceFiles
 #ifndef DelaunayMesh_H
 #define DelaunayMesh_H
 
-#include "Pair.H"
-#include "HashSet.H"
-#include "FixedList.H"
+#include "labelPairHashes.H"
 #include "boundBox.H"
 #include "indexedVertex.H"
 #include "CGALTriangulation3Ddefs.H"
@@ -77,20 +75,6 @@ public:
         typedef typename Triangulation::Finite_facets_iterator
             Finite_facets_iterator;
 
-        typedef HashSet
-        <
-           Pair<label>,
-           FixedList<label, 2>::Hash<>
-        > labelPairHashSet;
-
-        typedef HashTable
-        <
-            label,
-            labelPair,
-            FixedList<label, 2>::Hash<>
-        > labelTolabelPairHashTable;
-
-
 private:
 
     // Private data
@@ -263,7 +247,7 @@ public:
             autoPtr<polyMesh> createMesh
             (
                 const fileName& name,
-                labelTolabelPairHashTable& vertexMap,
+                labelPairLookup& vertexMap,
                 labelList& cellMap,
                 const bool writeDelaunayData = true
             ) const;
diff --git a/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/DelaunayMesh/DelaunayMeshIO.C b/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/DelaunayMesh/DelaunayMeshIO.C
index 42ff66646b305068bca7ed036ffbad3f212cdb03..5d6232510b6fda478a9cca6f90094950ee759080 100644
--- a/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/DelaunayMesh/DelaunayMeshIO.C
+++ b/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/DelaunayMesh/DelaunayMeshIO.C
@@ -337,7 +337,7 @@ Foam::autoPtr<Foam::polyMesh>
 Foam::DelaunayMesh<Triangulation>::createMesh
 (
     const fileName& name,
-    labelTolabelPairHashTable& vertexMap,
+    labelPairLookup& vertexMap,
     labelList& cellMap,
     const bool writeDelaunayData
 ) const
diff --git a/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/DelaunayMesh/DistributedDelaunayMesh.C b/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/DelaunayMesh/DistributedDelaunayMesh.C
index c620bea282e89b3d70f79da254c210af9a25d70d..f13d908eb03d0f86d1c0773ac8613e3595006d59 100644
--- a/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/DelaunayMesh/DistributedDelaunayMesh.C
+++ b/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/DelaunayMesh/DistributedDelaunayMesh.C
@@ -31,9 +31,6 @@ License
 #include "indexedVertexEnum.H"
 #include "IOmanip.H"
 
-// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
-
-
 // * * * * * * * * * * * * Static Member Functions * * * * * * * * * * * * * //
 
 template<class Triangulation>
@@ -541,8 +538,7 @@ Foam::label Foam::DistributedDelaunayMesh<Triangulation>::referVertices
     {
         for
         (
-            typename labelPairHashSet::const_iterator iter
-                = pointsNotInserted.begin();
+            labelPairHashSet::const_iterator iter = pointsNotInserted.begin();
             iter != pointsNotInserted.end();
             ++iter
         )
@@ -863,7 +859,7 @@ void Foam::DistributedDelaunayMesh<Triangulation>::sync(const boundBox& bb)
 
 template<class Triangulation>
 template<class PointIterator>
-typename Foam::DistributedDelaunayMesh<Triangulation>::labelPairHashSet
+Foam::labelPairHashSet
 Foam::DistributedDelaunayMesh<Triangulation>::rangeInsertReferredWithInfo
 (
     PointIterator begin,
diff --git a/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/DelaunayMesh/DistributedDelaunayMesh.H b/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/DelaunayMesh/DistributedDelaunayMesh.H
index 2c59cf6fde171f7d67bebb0de364e08deab52072..35b0859b53c1543ae3dc8c2e0af155a359a84f3b 100644
--- a/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/DelaunayMesh/DistributedDelaunayMesh.H
+++ b/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/DelaunayMesh/DistributedDelaunayMesh.H
@@ -71,10 +71,6 @@ public:
         typedef typename Triangulation::All_cells_iterator
             All_cells_iterator;
 
-        typedef typename DelaunayMesh<Triangulation>::labelPairHashSet
-            labelPairHashSet;
-
-
 private:
 
         autoPtr<List<boundBox>> allBackgroundMeshBounds_;
@@ -193,12 +189,6 @@ public:
             bool printErrors = true
         );
 
-//        distributeField();
-
-
-    // Queries
-
-
 };
 
 
diff --git a/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/cellShapeControl/cellShapeControlMesh/cellShapeControlMesh.C b/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/cellShapeControl/cellShapeControlMesh/cellShapeControlMesh.C
index 965a89996e8383af0ca23ccbeed87b769b173f25..a36e0370cfb0d12b097b941af3598c6cac477298 100644
--- a/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/cellShapeControl/cellShapeControlMesh/cellShapeControlMesh.C
+++ b/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/cellShapeControl/cellShapeControlMesh/cellShapeControlMesh.C
@@ -635,7 +635,7 @@ void Foam::cellShapeControlMesh::write() const
         }
     }
 
-    DelaunayMesh<CellSizeDelaunay>::labelTolabelPairHashTable vertexMap;
+    labelPairLookup vertexMap;
     labelList cellMap;
 
     autoPtr<polyMesh> meshPtr = DelaunayMesh<CellSizeDelaunay>::createMesh
diff --git a/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMesh.H b/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMesh.H
index 099e3281eb36cbd5aba21efe3b31130bdf3b58b6..d204911c8f9162024cefd1fd31db9a55d451774f 100644
--- a/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMesh.H
+++ b/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMesh.H
@@ -105,7 +105,7 @@ public:
     typedef Delaunay::Facet            Facet;
     typedef Delaunay::Point            Point;
 
-    typedef List<DynamicList<Pair<labelPair>>> labelPairPairDynListList;
+    typedef List<DynamicList<labelPairPair>>     labelPairPairDynListList;
 
     typedef Tuple2<pointIndexHit, label>         pointIndexHitAndFeature;
     typedef List<pointIndexHitAndFeature>        pointIndexHitAndFeatureList;
@@ -706,7 +706,7 @@ private:
         (
             labelList& owner,
             labelList& neighbour,
-            const HashSet<labelPair, labelPair::Hash<>>& deferredCollapseFaces
+            const labelPairHashSet& deferredCollapseFaces
         ) const;
 
         //- Check whether the cell sizes are fine enough. Creates a polyMesh.
diff --git a/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMeshCalcDualMesh.C b/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMeshCalcDualMesh.C
index 88cb25e6ac54325eabb8e92dd9865cdbaa0fd783..eb3ab47806c25a7b09d788a13a7bd1065fe57547 100644
--- a/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMeshCalcDualMesh.C
+++ b/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMeshCalcDualMesh.C
@@ -673,7 +673,7 @@ void Foam::conformalVoronoiMesh::deferredCollapseFaceSet
 (
     labelList& owner,
     labelList& neighbour,
-    const HashSet<labelPair, labelPair::Hash<>>& deferredCollapseFaces
+    const labelPairHashSet& deferredCollapseFaces
 ) const
 {
     DynamicList<label> faceLabels;
@@ -2131,14 +2131,14 @@ void Foam::conformalVoronoiMesh::createFacesOwnerNeighbourAndPatches
                             // Use this processor's vertex index as the master
                             // for sorting
 
-                            DynamicList<Pair<labelPair>>& sortingIndex =
+                            DynamicList<labelPairPair>& sortingIndex =
                                 procPatchSortingIndex[patchIndex];
 
                             if (vB->internalOrBoundaryPoint() && vB->referred())
                             {
                                 sortingIndex.append
                                 (
-                                    Pair<labelPair>
+                                    labelPairPair
                                     (
                                         labelPair(vA->index(), vA->procIndex()),
                                         labelPair(vB->index(), vB->procIndex())
@@ -2149,7 +2149,7 @@ void Foam::conformalVoronoiMesh::createFacesOwnerNeighbourAndPatches
                             {
                                 sortingIndex.append
                                 (
-                                    Pair<labelPair>
+                                    labelPairPair
                                     (
                                         labelPair(vB->index(), vB->procIndex()),
                                         labelPair(vA->index(), vA->procIndex())
@@ -2162,14 +2162,14 @@ void Foam::conformalVoronoiMesh::createFacesOwnerNeighbourAndPatches
                             // Use the other processor's vertex index as the
                             // master for sorting
 
-                            DynamicList<Pair<labelPair>>& sortingIndex =
+                            DynamicList<labelPairPair>& sortingIndex =
                                 procPatchSortingIndex[patchIndex];
 
                             if (vA->internalOrBoundaryPoint() && vA->referred())
                             {
                                 sortingIndex.append
                                 (
-                                    Pair<labelPair>
+                                    labelPairPair
                                     (
                                         labelPair(vA->index(), vA->procIndex()),
                                         labelPair(vB->index(), vB->procIndex())
@@ -2180,7 +2180,7 @@ void Foam::conformalVoronoiMesh::createFacesOwnerNeighbourAndPatches
                             {
                                 sortingIndex.append
                                 (
-                                    Pair<labelPair>
+                                    labelPairPair
                                     (
                                         labelPair(vB->index(), vB->procIndex()),
                                         labelPair(vA->index(), vA->procIndex())
@@ -2463,7 +2463,7 @@ void Foam::conformalVoronoiMesh::sortProcPatches
         faceList& faces = patchFaces[patchi];
         labelList& owner = patchOwners[patchi];
         DynamicList<label>& slaves = patchPointPairSlaves[patchi];
-        DynamicList<Pair<labelPair>>& sortingIndices
+        DynamicList<labelPairPair>& sortingIndices
             = patchSortingIndices[patchi];
 
         if (!sortingIndices.empty())
diff --git a/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMeshIO.C b/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMeshIO.C
index 5d6cdd3a695e0a1fd0c401c6418ef068f68a8c93..de7a97317d1d6773af1b693a9261578c69cd9b98 100644
--- a/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMeshIO.C
+++ b/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMeshIO.C
@@ -199,7 +199,7 @@ void Foam::conformalVoronoiMesh::writeMesh(const fileName& instance)
 
         Info<< nl << "Writing " << "tetDualMesh" << endl;
 
-        DistributedDelaunayMesh<Delaunay>::labelTolabelPairHashTable vertexMap;
+        labelPairLookup vertexMap;
         labelList cellMap;
         autoPtr<polyMesh> tetMesh =
             createMesh("tetDualMesh", vertexMap, cellMap);
diff --git a/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/pointPairs/pointPairs.C b/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/pointPairs/pointPairs.C
index 685999a167f68d0c18d8ac96ebbb0f7f5049236e..ecbcd3f104c6c49af07a766852916848f97e326e 100644
--- a/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/pointPairs/pointPairs.C
+++ b/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/pointPairs/pointPairs.C
@@ -28,7 +28,7 @@ License
 // * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * * //
 
 template<class Triangulation>
-inline Foam::Pair<Foam::labelPair>
+inline Foam::labelPairPair
 Foam::pointPairs<Triangulation>::orderPointPair
 (
     const labelPair& vA,
@@ -38,8 +38,8 @@ Foam::pointPairs<Triangulation>::orderPointPair
     return
     (
         (vA < vB)
-      ? Pair<labelPair>(vA, vB)
-      : Pair<labelPair>(vB, vA)
+      ? labelPairPair(vA, vB)
+      : labelPairPair(vB, vA)
     );
 }
 
@@ -85,7 +85,7 @@ inline bool Foam::pointPairs<Triangulation>::insertPointPair
 template<class Triangulation>
 Foam::pointPairs<Triangulation>::pointPairs(const Triangulation& triangulation)
 :
-    ptPairTable(),
+    StorageContainer(),
     triangulation_(triangulation)
 {}
 
@@ -181,7 +181,7 @@ void Foam::pointPairs<Triangulation>::reIndex(const Map<label>& oldToNewIndices)
 
     forAllConstIter(pointPairs, *this, iter)
     {
-        Pair<labelPair> e = iter.key();
+        labelPairPair e = iter.key();
 
         labelPair& start = e.first();
         labelPair& end = e.second();
diff --git a/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/pointPairs/pointPairs.H b/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/pointPairs/pointPairs.H
index 44a6aa88c8a62d30f6854e7c629b0737486073b7..7fc956edc05142840a3e69930f4f3f8217408bc3 100644
--- a/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/pointPairs/pointPairs.H
+++ b/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/pointPairs/pointPairs.H
@@ -39,20 +39,13 @@ Description
 #ifndef pointPairs_H
 #define pointPairs_H
 
-#include "labelPair.H"
-#include "HashSet.H"
+#include "labelPairHashes.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 namespace Foam
 {
 
-typedef HashSet
-<
-    Pair<labelPair>,
-    FixedList<labelPair, 2>::Hash<>
-> ptPairTable;
-
 /*---------------------------------------------------------------------------*\
                          Class pointPairs Declaration
 \*---------------------------------------------------------------------------*/
@@ -60,11 +53,12 @@ typedef HashSet
 template<class Triangulation>
 class pointPairs
 :
-    public ptPairTable
+    public HashSet<labelPairPair, labelPairPair::Hash<>>
 {
     // Private typedefs
 
-        typedef typename Triangulation::Vertex_handle Vertex_handle;
+    typedef HashSet<labelPairPair, labelPairPair::Hash<>> StorageContainer;
+    typedef typename Triangulation::Vertex_handle Vertex_handle;
 
 
     // Private data
@@ -74,7 +68,7 @@ class pointPairs
 
     // Private Member Functions
 
-        inline Pair<labelPair> orderPointPair
+        inline labelPairPair orderPointPair
         (
             const labelPair& vA,
             const labelPair& vB
diff --git a/applications/utilities/postProcessing/lagrangian/steadyParticleTracks/steadyParticleTracks.C b/applications/utilities/postProcessing/lagrangian/steadyParticleTracks/steadyParticleTracks.C
index 1b288f3c8d2bca28c3dd989e62d3f5ffbcb00943..a36a86b0b0d2ad06a84a99fb58a7e21c2003cebc 100644
--- a/applications/utilities/postProcessing/lagrangian/steadyParticleTracks/steadyParticleTracks.C
+++ b/applications/utilities/postProcessing/lagrangian/steadyParticleTracks/steadyParticleTracks.C
@@ -45,7 +45,7 @@ Description
 #include "timeSelector.H"
 #include "OFstream.H"
 #include "passiveParticleCloud.H"
-
+#include "labelPairHashes.H"
 #include "SortableList.H"
 #include "IOobjectList.H"
 #include "PtrList.H"
@@ -133,8 +133,6 @@ int main(int argc, char *argv[])
     fileName vtkPath(runTime.path()/"VTK");
     mkDir(vtkPath);
 
-    typedef HashTable<label, labelPair, labelPair::Hash<>> trackTableType;
-
     forAll(timeDirs, timeI)
     {
         runTime.setTime(timeDirs[timeI], timeI);
@@ -168,13 +166,14 @@ int main(int argc, char *argv[])
         label nTracks = 0;
 
         {
-            trackTableType trackTable;
+            labelPairLookup trackTable;
+
             forAll(particles, i)
             {
                 const label origProc = particles[i].origProc();
                 const label origId = particles[i].origId();
 
-                const trackTableType::const_iterator& iter =
+                labelPairLookup::const_iterator iter =
                     trackTable.find(labelPair(origProc, origId));
 
                 if (iter == trackTable.end())
diff --git a/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/interfaces/cyclicGAMGInterface/cyclicGAMGInterface.C b/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/interfaces/cyclicGAMGInterface/cyclicGAMGInterface.C
index 7f884c205b72dda264da829ddae2bbd7985f10a0..7986505c7e5aa13f5d8ed8d510060f47933c2a23 100644
--- a/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/interfaces/cyclicGAMGInterface/cyclicGAMGInterface.C
+++ b/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/interfaces/cyclicGAMGInterface/cyclicGAMGInterface.C
@@ -25,8 +25,7 @@ License
 
 #include "cyclicGAMGInterface.H"
 #include "addToRunTimeSelectionTable.H"
-#include "labelPair.H"
-#include "HashTable.H"
+#include "labelPairHashes.H"
 
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
@@ -96,10 +95,7 @@ Foam::cyclicGAMGInterface::cyclicGAMGInterface
     );
 
     // From coarse cell pair to coarse face
-    HashTable<label, labelPair, labelPair::Hash<>> cellsToCoarseFace
-    (
-        2*localRestrictAddressing.size()
-    );
+    labelPairLookup cellsToCoarseFace(2*localRestrictAddressing.size());
 
     forAll(localRestrictAddressing, ffi)
     {
@@ -126,8 +122,7 @@ Foam::cyclicGAMGInterface::cyclicGAMGInterface
             );
         }
 
-        HashTable<label, labelPair, labelPair::Hash<>>::const_iterator fnd =
-            cellsToCoarseFace.find(cellPair);
+        labelPairLookup::const_iterator fnd = cellsToCoarseFace.find(cellPair);
 
         if (fnd == cellsToCoarseFace.end())
         {
diff --git a/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/interfaces/processorGAMGInterface/processorGAMGInterface.C b/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/interfaces/processorGAMGInterface/processorGAMGInterface.C
index f68e1a853b00ab21f40c25ffe8a9ed060bb843fc..0c47042ef8904ddb0faf2fe0654a369503e4c4ee 100644
--- a/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/interfaces/processorGAMGInterface/processorGAMGInterface.C
+++ b/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/interfaces/processorGAMGInterface/processorGAMGInterface.C
@@ -25,8 +25,7 @@ License
 
 #include "processorGAMGInterface.H"
 #include "addToRunTimeSelectionTable.H"
-#include "HashTable.H"
-#include "labelPair.H"
+#include "labelPairHashes.H"
 
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
@@ -84,10 +83,7 @@ Foam::processorGAMGInterface::processorGAMGInterface
     );
 
     // From coarse cell pair to coarse face
-    HashTable<label, labelPair, labelPair::Hash<>> cellsToCoarseFace
-    (
-        2*localRestrictAddressing.size()
-    );
+    labelPairLookup cellsToCoarseFace(2*localRestrictAddressing.size());
 
     forAll(localRestrictAddressing, ffi)
     {
@@ -114,8 +110,7 @@ Foam::processorGAMGInterface::processorGAMGInterface
             );
         }
 
-        HashTable<label, labelPair, labelPair::Hash<>>::const_iterator fnd =
-            cellsToCoarseFace.find(cellPair);
+        labelPairLookup::const_iterator fnd = cellsToCoarseFace.find(cellPair);
 
         if (fnd == cellsToCoarseFace.end())
         {
diff --git a/src/OpenFOAM/meshes/polyMesh/mapPolyMesh/mapDistribute/mapDistributeBase.C b/src/OpenFOAM/meshes/polyMesh/mapPolyMesh/mapDistribute/mapDistributeBase.C
index 8f4866269d05f88169e11b37f5c01fdf3ffc2690..ece914d8c0ee02925af3c4a5e2519ca7daeb9cff 100644
--- a/src/OpenFOAM/meshes/polyMesh/mapPolyMesh/mapDistribute/mapDistributeBase.C
+++ b/src/OpenFOAM/meshes/polyMesh/mapPolyMesh/mapDistribute/mapDistributeBase.C
@@ -25,7 +25,7 @@ License
 
 #include "mapDistributeBase.H"
 #include "commSchedule.H"
-#include "HashSet.H"
+#include "labelPairHashes.H"
 #include "globalIndex.H"
 #include "ListOps.H"
 
@@ -50,7 +50,7 @@ Foam::List<Foam::labelPair> Foam::mapDistributeBase::schedule
     List<labelPair> allComms;
 
     {
-        HashSet<labelPair, labelPair::Hash<>> commsSet(Pstream::nProcs());
+        labelPairHashSet commsSet(Pstream::nProcs());
 
         // Find what communication is required
         forAll(subMap, proci)
diff --git a/src/conversion/fire/checkFireEdges.C b/src/conversion/fire/checkFireEdges.C
index 3969d1b62a49a1095cd1319822560b63559feab8..ae2f1b6c96a795743a5f05f268ff0e0a32a17a13 100644
--- a/src/conversion/fire/checkFireEdges.C
+++ b/src/conversion/fire/checkFireEdges.C
@@ -25,8 +25,7 @@ License
 
 #include "checkFireEdges.H"
 #include "polyMesh.H"
-#include "edge.H"
-#include "HashSet.H"
+#include "edgeHashes.H"
 #include "ListOps.H"
 
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
@@ -69,7 +68,6 @@ Foam::label Foam::checkFireEdges
 {
     label nFailedEdges = 0;
     const bool fullCheck = true;
-    typedef HashSet<edge, Hash<edge>> edgeHashSet;
 
     Info<< "Checking edges according to AVL/FIRE on-the-fly methodology..."
         << endl;
diff --git a/src/dynamicMesh/fvMeshDistribute/fvMeshDistribute.C b/src/dynamicMesh/fvMeshDistribute/fvMeshDistribute.C
index 49fcc74fcfb4c06e64d48455a6430b5d162e6948..23a13b9096086168ae99cd43c21dd6c38a548fb7 100644
--- a/src/dynamicMesh/fvMeshDistribute/fvMeshDistribute.C
+++ b/src/dynamicMesh/fvMeshDistribute/fvMeshDistribute.C
@@ -40,6 +40,7 @@ License
 #include "syncTools.H"
 #include "CompactListList.H"
 #include "fvMeshTools.H"
+#include "labelPairHashes.H"
 #include "ListOps.H"
 
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
@@ -982,7 +983,7 @@ void Foam::fvMeshDistribute::findCouples
 {
     // Store domain neighbour as map so we can easily look for pair
     // with same face+proc.
-    HashTable<label, labelPair, labelPair::Hash<>> map(domainFace.size());
+    labelPairLookup map(domainFace.size());
 
     forAll(domainProc, bFacei)
     {
@@ -1009,8 +1010,7 @@ void Foam::fvMeshDistribute::findCouples
         {
             labelPair myData(sourceFace[bFacei], sourceProc[bFacei]);
 
-            HashTable<label, labelPair, labelPair::Hash<>>::const_iterator
-                iter = map.find(myData);
+            labelPairLookup::const_iterator iter = map.find(myData);
 
             if (iter != map.end())
             {
diff --git a/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8/hexRef8.C b/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8/hexRef8.C
index 259f747bc868ad7f58c21b3475bcbc8cc22b3e28..f65a4972878a29ddd14ad629e46ab623573d1451 100644
--- a/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8/hexRef8.C
+++ b/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8/hexRef8.C
@@ -36,6 +36,7 @@ License
 #include "faceSet.H"
 #include "cellSet.H"
 #include "pointSet.H"
+#include "labelPairHashes.H"
 #include "OFstream.H"
 #include "Time.H"
 #include "FaceCellWave.H"
@@ -4625,10 +4626,9 @@ void Foam::hexRef8::checkMesh() const
 
             if (pp.coupled())
             {
-                // Check how many faces between owner and neighbour. Should
-                // be only one.
-                HashTable<label, labelPair, labelPair::Hash<>>
-                    cellToFace(2*pp.size());
+                // Check how many faces between owner and neighbour.
+                // Should be only one.
+                labelPairLookup cellToFace(2*pp.size());
 
                 label facei = pp.start();
 
diff --git a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/ParticleTracks/ParticleTracks.C b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/ParticleTracks/ParticleTracks.C
index b9a692fbf69da46b92f2a683419185ba21204e67..f7e66700b81557ead7b7272d2e4986f9438297d6 100644
--- a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/ParticleTracks/ParticleTracks.C
+++ b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/ParticleTracks/ParticleTracks.C
@@ -128,7 +128,7 @@ void Foam::ParticleTracks<CloudType>::postFace
              << "Cloud storage not allocated" << abort(FatalError);
         }
 
-        hitTableType::iterator iter =
+        labelPairLookup::iterator iter =
             faceHitCounter_.find(labelPair(p.origProc(), p.origId()));
 
         label localI = -1;
diff --git a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/ParticleTracks/ParticleTracks.H b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/ParticleTracks/ParticleTracks.H
index c1dc52a09c2e064b3373bf1af5e00374765ff353..6c5d6a17b66c5334450020e7e37ce9f79e1eb857 100644
--- a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/ParticleTracks/ParticleTracks.H
+++ b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/ParticleTracks/ParticleTracks.H
@@ -39,6 +39,7 @@ SourceFiles
 #define ParticleTracks_H
 
 #include "CloudFunctionObject.H"
+#include "labelPairHashes.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -61,9 +62,6 @@ class ParticleTracks
             //- Convenience typedef for parcel type
             typedef typename CloudType::parcelType parcelType;
 
-            //- Convenience typedef for hash hit-table
-            typedef HashTable<label, labelPair, typename labelPair::Hash<>>
-                hitTableType;
 
         //- Number of face-hit intervals between storing parcel data
         label trackInterval_;
@@ -75,7 +73,7 @@ class ParticleTracks
         Switch resetOnWrite_;
 
         //- Table of number of times a particle has hit a face
-        hitTableType faceHitCounter_;
+        labelPairLookup faceHitCounter_;
 
         //- Pointer to the cloud storage
         autoPtr<Cloud<parcelType>> cloudPtr_;
@@ -135,8 +133,8 @@ public:
             //- Return const access to the reset on write flag
             inline const Switch& resetOnWrite() const;
 
-            //- Rerurn the table of number of times a particle has hit a face
-            inline const hitTableType& faceHitCounter() const;
+            //- Return the table of number of times a particle has hit a face
+            inline const labelPairLookup& faceHitCounter() const;
 
             //- Return const access to the cloud
             inline const Cloud<parcelType>& cloud() const;
diff --git a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/ParticleTracks/ParticleTracksI.H b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/ParticleTracks/ParticleTracksI.H
index f09356a3b3edd04e29a72e565b61828365ca84b4..8e64611fbf6fe2ca05b196e9f30385b7cfbfc12d 100644
--- a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/ParticleTracks/ParticleTracksI.H
+++ b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/ParticleTracks/ParticleTracksI.H
@@ -49,7 +49,7 @@ inline const Foam::Switch& Foam::ParticleTracks<CloudType>::resetOnWrite() const
 
 
 template<class CloudType>
-inline const typename Foam::ParticleTracks<CloudType>::hitTableType&
+inline const Foam::labelPairLookup&
 Foam::ParticleTracks<CloudType>::faceHitCounter() const
 {
     return faceHitCounter_;
diff --git a/src/mesh/snappyHexMesh/meshRefinement/meshRefinement.H b/src/mesh/snappyHexMesh/meshRefinement/meshRefinement.H
index e01bb3f781f9b2c80413397db9d41bddf182e8e0..0fd25e3fde5911bf02efa4d5e47bbac80e53f519 100644
--- a/src/mesh/snappyHexMesh/meshRefinement/meshRefinement.H
+++ b/src/mesh/snappyHexMesh/meshRefinement/meshRefinement.H
@@ -47,7 +47,7 @@ SourceFiles
 #include "hexRef8.H"
 #include "mapPolyMesh.H"
 #include "autoPtr.H"
-#include "labelPair.H"
+#include "labelPairHashes.H"
 #include "indirectPrimitivePatch.H"
 #include "pointFieldsFwd.H"
 #include "Tuple2.H"
@@ -732,7 +732,7 @@ private:
                 const label ownZone,
                 const label neiZone,
                 wordPairHashTable& zonesToFaceZone,
-                HashTable<word, labelPair, labelPair::Hash<>>&
+                LabelPairMap<word>& zoneIDsToFaceZone
             ) const;
 
             //- Remove any loose standing cells
diff --git a/src/mesh/snappyHexMesh/meshRefinement/meshRefinementBaffles.C b/src/mesh/snappyHexMesh/meshRefinement/meshRefinementBaffles.C
index 6871b2f413d4ccb9adfd052af98d48c93e449d36..cae319df792425f4efdac6a93c0e832b6c6364a3 100644
--- a/src/mesh/snappyHexMesh/meshRefinement/meshRefinementBaffles.C
+++ b/src/mesh/snappyHexMesh/meshRefinement/meshRefinementBaffles.C
@@ -3361,7 +3361,7 @@ void Foam::meshRefinement::allocateInterRegionFaceZone
     const label ownZone,
     const label neiZone,
     wordPairHashTable& zonesToFaceZone,
-    HashTable<word, labelPair, labelPair::Hash<>>& zoneIDsToFaceZone
+    LabelPairMap<word>& zoneIDsToFaceZone
 ) const
 {
     const cellZoneMesh& cellZones = mesh_.cellZones();
@@ -3383,13 +3383,7 @@ void Foam::meshRefinement::allocateInterRegionFaceZone
             Swap(key.first(), key.second());
         }
 
-        HashTable<word, labelPair, labelPair::Hash<>>::
-        const_iterator zoneFnd = zoneIDsToFaceZone.find
-        (
-            key
-        );
-
-        if (zoneFnd == zoneIDsToFaceZone.end())
+        if (!zoneIDsToFaceZone.found(key))
         {
             // Not found. Allocate.
             const word ownZoneName =
diff --git a/src/meshTools/searchableSurface/searchableSurfaces.H b/src/meshTools/searchableSurface/searchableSurfaces.H
index 2c544b5d56c9b4b4caea9a756e355d94764caed5..c9f4abec0bbfbca654e7003581fe06417e3f3036 100644
--- a/src/meshTools/searchableSurface/searchableSurfaces.H
+++ b/src/meshTools/searchableSurface/searchableSurfaces.H
@@ -63,9 +63,6 @@ class searchableSurfaces
         //- Region names per surface
         List<wordList> regionNames_;
 
-        ////- From global region name to surface and region on surface
-        //HashTable<labelPair> regionNames_;
-
         //- Indices of all surfaces. Precalculated and stored.
         labelList allSurfaces_;
 
diff --git a/src/meshTools/triSurface/booleanOps/surfaceIntersection/edgeIntersections.C b/src/meshTools/triSurface/booleanOps/surfaceIntersection/edgeIntersections.C
index 8799d2f6aebe1fcaafdfb6d33f11be707f9039e5..851898de7e637901c95797808f3b54d51529d3e6 100644
--- a/src/meshTools/triSurface/booleanOps/surfaceIntersection/edgeIntersections.C
+++ b/src/meshTools/triSurface/booleanOps/surfaceIntersection/edgeIntersections.C
@@ -26,7 +26,6 @@ License
 #include "edgeIntersections.H"
 #include "triSurfaceSearch.H"
 #include "OFstream.H"
-#include "HashSet.H"
 #include "triSurface.H"
 #include "pointIndexHit.H"
 #include "treeDataTriSurface.H"
diff --git a/src/meshTools/triSurface/booleanOps/surfaceIntersection/surfaceIntersection.C b/src/meshTools/triSurface/booleanOps/surfaceIntersection/surfaceIntersection.C
index 7114d09b437571eb856c7dffc37ba7fce0d4d121..a98dd53e9151ea45b1e81469e831aaa306c969e6 100644
--- a/src/meshTools/triSurface/booleanOps/surfaceIntersection/surfaceIntersection.C
+++ b/src/meshTools/triSurface/booleanOps/surfaceIntersection/surfaceIntersection.C
@@ -26,7 +26,7 @@ License
 #include "surfaceIntersection.H"
 #include "triSurfaceSearch.H"
 #include "OFstream.H"
-#include "HashSet.H"
+#include "labelPairHashes.H"
 #include "triSurface.H"
 #include "pointIndexHit.H"
 #include "mergePoints.H"