diff --git a/applications/test/PatchTools/Test-PatchTools.C b/applications/test/PatchTools/Test-PatchTools.C
index 2d52c3e4f5ebf0b6319263e8d75e4c88197460b3..c7222340060b583322cafd80a7d8a1af217ef0c2 100644
--- a/applications/test/PatchTools/Test-PatchTools.C
+++ b/applications/test/PatchTools/Test-PatchTools.C
@@ -6,6 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2012-2016 OpenFOAM Foundation
+    Copyright (C) 2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -24,7 +25,7 @@ License
     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
 
 Application
-    testPatchTools
+    Test-PatchTools
 
 Description
     Test app for PatchTools functionality
@@ -261,7 +262,7 @@ int main(int argc, char *argv[])
 //            (
 //                mesh,
 //                pp,
-//                identity(pp.size(), pp.start())
+//                identity(pp.range())
 //            )
 //        );
 //        forAll(pn, pointi)
@@ -278,7 +279,7 @@ int main(int argc, char *argv[])
 //            (
 //                mesh,
 //                pp,
-//                identity(pp.size(), pp.start())
+//                identity(pp.range())
 //            )
 //        );
 //        forAll(pn, pointi)
diff --git a/applications/utilities/mesh/generation/blockMesh/mergePatchPairs.H b/applications/utilities/mesh/generation/blockMesh/mergePatchPairs.H
index be551d01f604ae4837fdcf1d04f8597722124abb..21e68709f6701b6ce120d36367152f01455a22fc 100644
--- a/applications/utilities/mesh/generation/blockMesh/mergePatchPairs.H
+++ b/applications/utilities/mesh/generation/blockMesh/mergePatchPairs.H
@@ -41,7 +41,7 @@
             fz[3*pairi] = new faceZone
             (
                 mergeName + "MasterZone",
-                identity(masterPatch.size(), masterPatch.start()),
+                identity(masterPatch.range()),
                 false, // none are flipped
                 0,
                 mesh.faceZones()
@@ -55,7 +55,7 @@
             fz[3*pairi + 1] = new faceZone
             (
                 mergeName + "SlaveZone",
-                identity(slavePatch.size(), slavePatch.start()),
+                identity(slavePatch.range()),
                 false, // none are flipped
                 1,
                 mesh.faceZones()
diff --git a/src/dynamicMesh/perfectInterface/perfectInterface.C b/src/dynamicMesh/perfectInterface/perfectInterface.C
index 2a86c2ae942b214e57a25e3bc015e6fc3169b076..da1cc5130f2e6212dffc9e4f42e5e8af86cfbd57 100644
--- a/src/dynamicMesh/perfectInterface/perfectInterface.C
+++ b/src/dynamicMesh/perfectInterface/perfectInterface.C
@@ -447,18 +447,15 @@ void Foam::perfectInterface::setRefinement(polyTopoChange& ref) const
         const polyPatch& patch0 = patches[masterPatchID_.index()];
         const polyPatch& patch1 = patches[slavePatchID_.index()];
 
-
-        labelList pp0Labels(identity(patch0.size(), patch0.start()));
         indirectPrimitivePatch pp0
         (
-            IndirectList<face>(mesh.faces(), pp0Labels),
+            IndirectList<face>(mesh.faces(), identity(patch0.range())),
             mesh.points()
         );
 
-        labelList pp1Labels(identity(patch1.size(), patch1.start()));
         indirectPrimitivePatch pp1
         (
-            IndirectList<face>(mesh.faces(), pp1Labels),
+            IndirectList<face>(mesh.faces(), identity(patch1.range())),
             mesh.points()
         );
 
diff --git a/src/fileFormats/ensight/mesh/ensightMesh.C b/src/fileFormats/ensight/mesh/ensightMesh.C
index d897a9e1e41d5fb9e6a9d920b9f24b23e3847ff9..65c5e5bbd9c4b4d65f5734168114c2984cb6f96d 100644
--- a/src/fileFormats/ensight/mesh/ensightMesh.C
+++ b/src/fileFormats/ensight/mesh/ensightMesh.C
@@ -333,7 +333,7 @@ void Foam::ensightMesh::correct()
         part.classify
         (
             mesh_.faces(),
-            identity(p.size(), p.start()),
+            identity(p.range()),
             boolList(),  // no flip map
             excludeFace
         );
diff --git a/src/mesh/snappyHexMesh/snappyHexMeshDriver/snappyLayerDriver.C b/src/mesh/snappyHexMesh/snappyHexMeshDriver/snappyLayerDriver.C
index b319d9c95c98d58112e4590064f3a6604c19a086..c383960c0627b1d6317658c9c18525861359c937 100644
--- a/src/mesh/snappyHexMesh/snappyHexMeshDriver/snappyLayerDriver.C
+++ b/src/mesh/snappyHexMesh/snappyHexMeshDriver/snappyLayerDriver.C
@@ -167,12 +167,6 @@ void Foam::snappyLayerDriver::checkMeshManifold() const
 
     Info<< nl << "Checking mesh manifoldness ..." << endl;
 
-    // Get all outside faces
-    labelList outsideFaces
-    (
-        identity(mesh.nBoundaryFaces(), mesh.nInternalFaces())
-    );
-
     pointSet nonManifoldPoints
     (
         mesh,
@@ -185,7 +179,11 @@ void Foam::snappyLayerDriver::checkMeshManifold() const
     (
         indirectPrimitivePatch
         (
-            IndirectList<face>(mesh.faces(), outsideFaces),
+            IndirectList<face>
+            (
+                mesh.faces(),
+                identity(mesh.boundaryMesh().range())  // All outside faces
+            ),
             mesh.points()
         ),
         nonManifoldPoints
diff --git a/src/meshTools/indexedOctree/treeDataFace.C b/src/meshTools/indexedOctree/treeDataFace.C
index eed80bed445bd150541c2c6d781780f028ea5ae6..859f5773060e13ba576f03eb6b53e4f8780a0e02 100644
--- a/src/meshTools/indexedOctree/treeDataFace.C
+++ b/src/meshTools/indexedOctree/treeDataFace.C
@@ -6,7 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2011-2016 OpenFOAM Foundation
-    Copyright (C) 2017-2019 OpenCFD Ltd.
+    Copyright (C) 2017-2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -120,10 +120,7 @@ Foam::treeDataFace::treeDataFace
 )
 :
     mesh_(patch.boundaryMesh().mesh()),
-    faceLabels_
-    (
-        identity(patch.size(), patch.start())
-    ),
+    faceLabels_(identity(patch.range())),
     isTreeFace_(mesh_.nFaces(), false),
     cacheBb_(cacheBb)
 {
diff --git a/src/meshTools/mappedPatches/mappedPolyPatch/mappedPatchBase.C b/src/meshTools/mappedPatches/mappedPolyPatch/mappedPatchBase.C
index c2fe6eb8d94f0aa8177daff70feec27fb7ea9e6c..329c8dac8ede5a522b64ae583c4f25e1b08a7ca4 100644
--- a/src/meshTools/mappedPatches/mappedPolyPatch/mappedPatchBase.C
+++ b/src/meshTools/mappedPatches/mappedPolyPatch/mappedPatchBase.C
@@ -284,9 +284,6 @@ void Foam::mappedPatchBase::findSamples
             }
             else
             {
-                // patch faces
-                const labelList patchFaces(identity(pp.size(), pp.start()));
-
                 treeBoundBox patchBb
                 (
                     treeBoundBox(pp.points(), pp.meshPoints()).extend
@@ -304,7 +301,7 @@ void Foam::mappedPatchBase::findSamples
                     (
                         false,      // do not cache bb
                         mesh,
-                        patchFaces  // boundary faces only
+                        identity(pp.range())  // boundary faces only
                     ),
                     patchBb,        // overall search domain
                     8,              // maxLevel
diff --git a/src/topoChangerFvMesh/linearValveFvMesh/linearValveFvMesh.C b/src/topoChangerFvMesh/linearValveFvMesh/linearValveFvMesh.C
index 9abc753a4e19a312a1987f60cd13184e25075754..e31f825dafb13943b4c90161db78899c3cdce76b 100644
--- a/src/topoChangerFvMesh/linearValveFvMesh/linearValveFvMesh.C
+++ b/src/topoChangerFvMesh/linearValveFvMesh/linearValveFvMesh.C
@@ -88,7 +88,7 @@ void Foam::linearValveFvMesh::addZonesAndModifiers()
     fz[0] = new faceZone
     (
         "insideSliderZone",
-        identity(innerSlider.size(), innerSlider.start()),
+        identity(innerSlider.range()),
         false, // none are flipped
         0,
         faceZones()
@@ -104,7 +104,7 @@ void Foam::linearValveFvMesh::addZonesAndModifiers()
     fz[1] = new faceZone
     (
         "outsideSliderZone",
-        identity(outerSlider.size(), outerSlider.start()),
+        identity(outerSlider.range()),
         false, // none are flipped
         1,
         faceZones()
diff --git a/src/topoChangerFvMesh/linearValveLayersFvMesh/linearValveLayersFvMesh.C b/src/topoChangerFvMesh/linearValveLayersFvMesh/linearValveLayersFvMesh.C
index 67ff38baa8f85ba2b40f1a081cfec4a30fa19a70..7aac1ee2daac9401803b1b3664989714b6ef70a0 100644
--- a/src/topoChangerFvMesh/linearValveLayersFvMesh/linearValveLayersFvMesh.C
+++ b/src/topoChangerFvMesh/linearValveLayersFvMesh/linearValveLayersFvMesh.C
@@ -95,7 +95,7 @@ void Foam::linearValveLayersFvMesh::addZonesAndModifiers()
     fz[0] = new faceZone
     (
         "insideSliderZone",
-        identity(innerSlider.size(), innerSlider.start()),
+        identity(innerSlider.range()),
         false, // none are flipped
         0,
         faceZones()
@@ -111,7 +111,7 @@ void Foam::linearValveLayersFvMesh::addZonesAndModifiers()
     fz[1] = new faceZone
     (
         "outsideSliderZone",
-        identity(outsideSlider.size(), outsideSlider.start()),
+        identity(outsideSlider.range()),
         false, // none are flipped
         1,
         faceZones()
@@ -131,7 +131,7 @@ void Foam::linearValveLayersFvMesh::addZonesAndModifiers()
     fz[3] = new faceZone
     (
         "valveLayerZone",
-        identity(layerPatch.size(), layerPatch.start()),
+        identity(layerPatch.range()),
         lpf,
         true, // all are flipped
         0,
diff --git a/src/topoChangerFvMesh/mixerFvMesh/mixerFvMesh.C b/src/topoChangerFvMesh/mixerFvMesh/mixerFvMesh.C
index 3667265d292cc1682e2fe36ccf4a481efc7ba629..eba863b6e25c81d4e9ec8cd7ea1098c8562b02fb 100644
--- a/src/topoChangerFvMesh/mixerFvMesh/mixerFvMesh.C
+++ b/src/topoChangerFvMesh/mixerFvMesh/mixerFvMesh.C
@@ -89,7 +89,7 @@ void Foam::mixerFvMesh::addZonesAndModifiers()
     fz[0] = new faceZone
     (
         "insideSliderZone",
-        identity(innerSlider.size(), innerSlider.start()),
+        identity(innerSlider.range()),
         false, // none are flipped
         0,
         faceZones()
@@ -105,7 +105,7 @@ void Foam::mixerFvMesh::addZonesAndModifiers()
     fz[1] = new faceZone
     (
         "outsideSliderZone",
-        identity(outerSlider.size(), outerSlider.start()),
+        identity(outerSlider.range()),
         false, // none are flipped
         1,
         faceZones()