diff --git a/Documentation/release/dev/add-structured-points-cells-cellTypes.md b/Documentation/release/dev/add-structured-points-cells-cellTypes.md
new file mode 100644
index 0000000000000000000000000000000000000000..dd5b6fe5dd2833f1cbd3ad6cabc010bdd0fcf9ee
--- /dev/null
+++ b/Documentation/release/dev/add-structured-points-cells-cellTypes.md
@@ -0,0 +1,60 @@
+## vtkImageData/vtkRectilinearGrid/vtkStructuredGrid: Improve performance using structured Points, Cells, CellTypes
+
+`vtkStructuredPointArray<ValueType>` has been implemented to enable fast query of structured points.
+
+`vtkStructuredCellArray` has been implemented to enable fast query of structured cells. `vtkStructuredCellArray` and
+`vtkCellArray` have `vtkAbstractCellArray` as their parent class.
+
+`vtkStructuredPointArray<ValueType>`, `vtkStructuredCellArray`, and `vtkConstantArray<int>` are used to implement
+the following three functions in `vtkStructuredData`.
+
+1) `vtkSmartPointer<vtkPoints> GetPoints(vtkDataArray* xCoords, vtkDataArray* yCoords, vtkDataArray* zCoords,
+   int extent[6], double dirMatrix[9])`
+2) `vtkSmartPointer<vtkStructuredCellArray> GetCellArray(int extent[6], bool usePixelVoxelOrientation)`
+3) `vtkSmartPointer<vtkConstantArray<int>> GetCellTypesArray(int extent[6], bool usePixelVoxelOrientation)`
+
+The above functions are used to build the structured Points, Cells, and CellTypes
+for `vtkImageData`/`vtkRectilinearGrid`,
+and to build the structured Cells, and CellTypes for `vtkStructuredGrid`.
+
+Using these structured classes, the performance of the following functions has been optimized.
+
+1) `GetPoint` for `vtkImageData`/`vtkRectilinearGrid`
+2) `GetCellBounds` for `vtkImageData`/`vtkRectilinearGrid`/`vtkStructuredGrid`
+3) `GetCellSize` for `vtkImageData`/`vtkRectilinearGrid`/`vtkStructuredGrid`
+4) `GetCellType` for `vtkImageData`/`vtkRectilinearGrid`/`vtkStructuredGrid`
+5) `GetCellPoints` for `vtkImageData`/`vtkRectilinearGrid`/`vtkStructuredGrid`
+6) `GetCell` for `vtkImageData`/`vtkRectilinearGrid`/`vtkStructuredGrid`
+
+`vtkImageData` and `vtkRectilinearGrid` now check for cell visibility when using the `GetCell`, `GetCellSize`, and
+`GetCellType` functions. Also they have blanking, and un-blanking capabilities of points and cells. Thanks to these
+changes, the implementation of `vtkUniformGrid` has been greatly simplified.
+
+Since `vtkImageData` and `vtkRectilinearGrid` now have structured points, `vtkDataSet` has a function `GetPoints` that
+returns the structured/explicit points, if present, else it creates an internally copy of the points using `GetPoint`
+and returns that. Thanks to this addition `void vtkRectilinearGrid::GetPoints(vtkPoints* points)` has been deprecated.
+
+Additionally, `vtkImageData`/`vtkRectilinearGrid`/`vtkStructuredGrid` now also have `GetCells` and `GetCellTypesArray`
+functions.
+
+To effectively utilize the structured Points. `vtkDataArrayRange` now has `GetTuple` and `SetTuple` functions
+that can efficiently query the structured Points when it has been dispatched.
+
+To that end, the following classes/functions have been updated to efficiently query the structured Points, Cells, and
+CellTypes.
+
+1) `vtkTableBasedClipDataSet`
+2) `vtkStructuredDataPlaneCutter`
+3) `vtkExtractGeometry`
+4) `vtkExtractCells`
+5) `vtkElevationFilter`
+6) `vtkPoints::GetPoints`
+7) `vtkBoundingBox::ComputeBounds`
+8) `vtkIOSSModel::StructuredPointsOperator`
+
+Moreover, in `vtkStructuredDataPlaneCutter` when `vtkFlyingEdgesPlaneCutter` is used, if scalars are not present, then
+a constant array is created instead of using `vtkElevationFilter` for better performance. If ghosts are present,
+and InterpolateAttributes is on then `vtkFlyingEdgesPlaneCutter` is used and the ghosts are removed afterward.
+
+Finally, in `vtkContourFilter`, when `vtkFlyingEdges3D` or `vtkSynchronizedTemplates3D` is used, if ghosts are present.
+then ghosts will be removed afterward.