diff --git a/MeshLib/Vtk/VtkMappedPropertyVectorTemplate-impl.h b/MeshLib/Vtk/VtkMappedPropertyVectorTemplate-impl.h
index 2198680722d1b3b90c36e24678d6a982ab82877f..964a0637ae11d6771f62239cfa9d2a2bd9f2c8be 100644
--- a/MeshLib/Vtk/VtkMappedPropertyVectorTemplate-impl.h
+++ b/MeshLib/Vtk/VtkMappedPropertyVectorTemplate-impl.h
@@ -209,13 +209,6 @@ template <class Scalar> void VtkMappedPropertyVectorTemplate<Scalar>
     }
 }
 
-//------------------------------------------------------------------------------
-template <class Scalar> Scalar VtkMappedPropertyVectorTemplate<Scalar>
-::GetValue(vtkIdType idx)
-{
-    return (*this->_propertyVector)[idx];
-}
-
 //------------------------------------------------------------------------------
 template <class Scalar> Scalar& VtkMappedPropertyVectorTemplate<Scalar>
 ::GetValueReference(vtkIdType idx)
@@ -226,13 +219,6 @@ template <class Scalar> Scalar& VtkMappedPropertyVectorTemplate<Scalar>
     return value;
 }
 
-//------------------------------------------------------------------------------
-template <class Scalar> void VtkMappedPropertyVectorTemplate<Scalar>
-::GetTupleValue(vtkIdType tupleId, Scalar *tuple)
-{
-    *tuple = (*this->_propertyVector)[tupleId];
-}
-
 //------------------------------------------------------------------------------
 template <class Scalar> int VtkMappedPropertyVectorTemplate<Scalar>
 ::Allocate(vtkIdType, vtkIdType)
@@ -392,28 +378,6 @@ template <class Scalar> void VtkMappedPropertyVectorTemplate<Scalar>
     vtkErrorMacro("Read only container.")
 }
 
-//------------------------------------------------------------------------------
-template <class Scalar> void VtkMappedPropertyVectorTemplate<Scalar>
-::SetTupleValue(vtkIdType, const Scalar*)
-{
-    vtkErrorMacro("Read only container.")
-}
-
-//------------------------------------------------------------------------------
-template <class Scalar> void VtkMappedPropertyVectorTemplate<Scalar>
-::InsertTupleValue(vtkIdType, const Scalar*)
-{
-    vtkErrorMacro("Read only container.")
-}
-
-//------------------------------------------------------------------------------
-template <class Scalar> vtkIdType VtkMappedPropertyVectorTemplate<Scalar>
-::InsertNextTupleValue(const Scalar *)
-{
-    vtkErrorMacro("Read only container.")
-    return -1;
-}
-
 //------------------------------------------------------------------------------
 template <class Scalar> void VtkMappedPropertyVectorTemplate<Scalar>
 ::SetValue(vtkIdType, Scalar)
@@ -471,4 +435,78 @@ template <class Scalar> vtkIdType VtkMappedPropertyVectorTemplate<Scalar>
     return -1;
 }
 
+#if VTK_MAJOR_VERSION >= 7 && VTK_MINOR_VERSION >= 1
+//------------------------------------------------------------------------------
+template <class Scalar>
+Scalar VtkMappedPropertyVectorTemplate<Scalar>::GetValue(vtkIdType idx) const
+{
+    return (*this->_propertyVector)[idx];
+}
+//------------------------------------------------------------------------------
+template <class Scalar>
+void VtkMappedPropertyVectorTemplate<Scalar>::GetTypedTuple(vtkIdType tupleId,
+                                                            Scalar* tuple) const
+{
+    *tuple = (*this->_propertyVector)[tupleId];
+}
+//------------------------------------------------------------------------------
+template <class Scalar>
+void VtkMappedPropertyVectorTemplate<Scalar>::SetTypedTuple(vtkIdType,
+                                                            const Scalar*)
+{
+    vtkErrorMacro("Read only container.");
+}
+//------------------------------------------------------------------------------
+template <class Scalar>
+void VtkMappedPropertyVectorTemplate<Scalar>::InsertTypedTuple(vtkIdType,
+                                                               const Scalar*)
+{
+    vtkErrorMacro("Read only container.");
+}
+//------------------------------------------------------------------------------
+template <class Scalar>
+vtkIdType VtkMappedPropertyVectorTemplate<Scalar>::InsertNextTypedTuple(
+    const Scalar*)
+{
+    vtkErrorMacro("Read only container.");
+    return -1;
+}
+#else
+//------------------------------------------------------------------------------
+template <class Scalar>
+Scalar VtkMappedPropertyVectorTemplate<Scalar>::GetValue(vtkIdType idx)
+{
+    return (*this->_propertyVector)[idx];
+}
+//------------------------------------------------------------------------------
+template <class Scalar>
+void VtkMappedPropertyVectorTemplate<Scalar>::GetTupleValue(vtkIdType tupleId,
+                                                            Scalar* tuple)
+{
+    *tuple = (*this->_propertyVector)[tupleId];
+}
+//------------------------------------------------------------------------------
+template <class Scalar>
+void VtkMappedPropertyVectorTemplate<Scalar>::SetTupleValue(vtkIdType,
+                                                            const Scalar*)
+{
+    vtkErrorMacro("Read only container.");
+}
+//------------------------------------------------------------------------------
+template <class Scalar>
+void VtkMappedPropertyVectorTemplate<Scalar>::InsertTupleValue(vtkIdType,
+                                                               const Scalar*)
+{
+    vtkErrorMacro("Read only container.");
+}
+//------------------------------------------------------------------------------
+template <class Scalar>
+vtkIdType VtkMappedPropertyVectorTemplate<Scalar>::InsertNextTupleValue(
+    const Scalar*)
+{
+    vtkErrorMacro("Read only container.");
+    return -1;
+}
+
+#endif  // vtk version
 } // end namespace MeshLib
diff --git a/MeshLib/Vtk/VtkMappedPropertyVectorTemplate.h b/MeshLib/Vtk/VtkMappedPropertyVectorTemplate.h
index 0388c3fd705e43b5e97368791f3cf469a796f0e6..8373f6454e9a4fb2cdf7136288ec5efb75f96b29 100644
--- a/MeshLib/Vtk/VtkMappedPropertyVectorTemplate.h
+++ b/MeshLib/Vtk/VtkMappedPropertyVectorTemplate.h
@@ -17,8 +17,9 @@
 #define VTKMAPPEDELEMENTDATAARRAY_H_
 
 #include <vtkMappedDataArray.h>
-#include <vtkTypeTemplate.h>  // For templated vtkObject API
-#include <vtkObjectFactory.h> // for vtkStandardNewMacro
+#include <vtkObjectFactory.h>  // for vtkStandardNewMacro
+#include <vtkTypeTemplate.h>   // For templated vtkObject API
+#include <vtkVersion.h>
 
 #include "MeshLib/Elements/Element.h"
 
@@ -53,9 +54,7 @@ public:
     void GetTuple(vtkIdType i, double *tuple) override;
     vtkIdType LookupTypedValue(Scalar value) override;
     void LookupTypedValue(Scalar value, vtkIdList *ids) override;
-    Scalar GetValue(vtkIdType idx);
     Scalar& GetValueReference(vtkIdType idx) override;
-    void GetTupleValue(vtkIdType idx, Scalar *t);
 
     // Description:
     // This container is read only -- this method does nothing but print a
@@ -86,13 +85,24 @@ public:
     void RemoveTuple(vtkIdType id) override;
     void RemoveFirstTuple() override;
     void RemoveLastTuple() override;
-    void SetTupleValue(vtkIdType i, const Scalar *t);
-    void InsertTupleValue(vtkIdType i, const Scalar *t);
-    vtkIdType InsertNextTupleValue(const Scalar *t);
     void SetValue(vtkIdType idx, Scalar value) override;
     vtkIdType InsertNextValue(Scalar v) override;
     void InsertValue(vtkIdType idx, Scalar v) override;
 
+#if VTK_MAJOR_VERSION >= 7 && VTK_MINOR_VERSION >= 1
+    Scalar GetValue(vtkIdType idx) const override;
+    void GetTypedTuple(vtkIdType idx, Scalar* t) const override;
+    void SetTypedTuple(vtkIdType i, const Scalar* t) override;
+    void InsertTypedTuple(vtkIdType i, const Scalar* t) override;
+    vtkIdType InsertNextTypedTuple(const Scalar* t) override;
+#else
+    Scalar GetValue(vtkIdType idx) override;
+    void GetTupleValue(vtkIdType idx, Scalar* t) override;
+    void SetTupleValue(vtkIdType i, const Scalar* t) override;
+    void InsertTupleValue(vtkIdType i, const Scalar* t) override;
+    vtkIdType InsertNextTupleValue(const Scalar* t) override;
+#endif  // vtk version
+
 protected:
     VtkMappedPropertyVectorTemplate();
     ~VtkMappedPropertyVectorTemplate();
diff --git a/MeshLib/Vtk/VtkMeshNodalCoordinatesTemplate-impl.h b/MeshLib/Vtk/VtkMeshNodalCoordinatesTemplate-impl.h
index f21973a241ea104a6ca1ea68c193bbcfad66f433..60d32422a3e33a2434ef9ef013a87452e383dff2 100644
--- a/MeshLib/Vtk/VtkMeshNodalCoordinatesTemplate-impl.h
+++ b/MeshLib/Vtk/VtkMeshNodalCoordinatesTemplate-impl.h
@@ -183,12 +183,6 @@ template <class Scalar> void VtkMeshNodalCoordinatesTemplate<Scalar>
         ids->InsertNextId(index++);
 }
 
-template <class Scalar> Scalar VtkMeshNodalCoordinatesTemplate<Scalar>
-::GetValue(vtkIdType idx)
-{
-    return this->GetValueReference(idx);
-}
-
 template <class Scalar> Scalar& VtkMeshNodalCoordinatesTemplate<Scalar>
 ::GetValueReference(vtkIdType idx)
 {
@@ -197,14 +191,6 @@ template <class Scalar> Scalar& VtkMeshNodalCoordinatesTemplate<Scalar>
     return (*(*this->_nodes)[tuple])[comp];
 }
 
-template <class Scalar> void VtkMeshNodalCoordinatesTemplate<Scalar>
-::GetTupleValue(vtkIdType tupleId, Scalar *tuple)
-{
-    tuple[0] = (*(*this->_nodes)[tupleId])[0];
-    tuple[1] = (*(*this->_nodes)[tupleId])[1];
-    tuple[2] = (*(*this->_nodes)[tupleId])[2];
-}
-
 template <class Scalar> int VtkMeshNodalCoordinatesTemplate<Scalar>
 ::Allocate(vtkIdType, vtkIdType)
 {
@@ -366,27 +352,6 @@ template <class Scalar> void VtkMeshNodalCoordinatesTemplate<Scalar>
     return;
 }
 
-template <class Scalar> void VtkMeshNodalCoordinatesTemplate<Scalar>
-::SetTupleValue(vtkIdType, const Scalar*)
-{
-    vtkErrorMacro("Read only container.")
-    return;
-}
-
-template <class Scalar> void VtkMeshNodalCoordinatesTemplate<Scalar>
-::InsertTupleValue(vtkIdType, const Scalar*)
-{
-    vtkErrorMacro("Read only container.")
-    return;
-}
-
-template <class Scalar> vtkIdType VtkMeshNodalCoordinatesTemplate<Scalar>
-::InsertNextTupleValue(const Scalar *)
-{
-    vtkErrorMacro("Read only container.")
-    return -1;
-}
-
 template <class Scalar> void VtkMeshNodalCoordinatesTemplate<Scalar>
 ::SetValue(vtkIdType, Scalar)
 {
@@ -432,4 +397,85 @@ template <class Scalar> vtkIdType VtkMeshNodalCoordinatesTemplate<Scalar>
     return -1;
 }
 
+
+#if VTK_MAJOR_VERSION >= 7 && VTK_MINOR_VERSION >= 1
+template <class Scalar> Scalar& VtkMeshNodalCoordinatesTemplate<Scalar>
+::GetValueReference(vtkIdType idx) const
+{
+    const vtkIdType tuple = idx / this->NumberOfComponents;
+    const vtkIdType comp = idx % this->NumberOfComponents;
+    return (*(*this->_nodes)[tuple])[comp];
+}
+
+template <class Scalar> Scalar VtkMeshNodalCoordinatesTemplate<Scalar>
+::GetValue(vtkIdType idx) const
+{
+    return this->GetValueReference(idx);
+}
+
+template <class Scalar> void VtkMeshNodalCoordinatesTemplate<Scalar>
+::GetTypedTuple(vtkIdType tupleId, Scalar *tuple) const
+{
+    tuple[0] = (*(*this->_nodes)[tupleId])[0];
+    tuple[1] = (*(*this->_nodes)[tupleId])[1];
+    tuple[2] = (*(*this->_nodes)[tupleId])[2];
+}
+
+template <class Scalar> void VtkMeshNodalCoordinatesTemplate<Scalar>
+::SetTypedTuple(vtkIdType, const Scalar*)
+{
+    vtkErrorMacro("Read only container.");
+    return;
+}
+
+template <class Scalar> void VtkMeshNodalCoordinatesTemplate<Scalar>
+::InsertTypedTuple(vtkIdType, const Scalar*)
+{
+    vtkErrorMacro("Read only container.");
+    return;
+}
+
+template <class Scalar> vtkIdType VtkMeshNodalCoordinatesTemplate<Scalar>
+::InsertNextTypedTuple(const Scalar *)
+{
+    vtkErrorMacro("Read only container.");
+    return -1;
+}
+
+#else
+template <class Scalar> Scalar VtkMeshNodalCoordinatesTemplate<Scalar>
+::GetValue(vtkIdType idx)
+{
+    return this->GetValueReference(idx);
+}
+template <class Scalar> void VtkMeshNodalCoordinatesTemplate<Scalar>
+::GetTupleValue(vtkIdType tupleId, Scalar *tuple)
+{
+    tuple[0] = (*(*this->_nodes)[tupleId])[0];
+    tuple[1] = (*(*this->_nodes)[tupleId])[1];
+    tuple[2] = (*(*this->_nodes)[tupleId])[2];
+}
+
+template <class Scalar> void VtkMeshNodalCoordinatesTemplate<Scalar>
+::SetTupleValue(vtkIdType, const Scalar*)
+{
+    vtkErrorMacro("Read only container.");
+    return;
+}
+
+template <class Scalar> void VtkMeshNodalCoordinatesTemplate<Scalar>
+::InsertTupleValue(vtkIdType, const Scalar*)
+{
+    vtkErrorMacro("Read only container.");
+    return;
+}
+
+template <class Scalar> vtkIdType VtkMeshNodalCoordinatesTemplate<Scalar>
+::InsertNextTupleValue(const Scalar *)
+{
+    vtkErrorMacro("Read only container.");
+    return -1;
+}
+
+#endif  // vtk version
 } // end namespace
diff --git a/MeshLib/Vtk/VtkMeshNodalCoordinatesTemplate.h b/MeshLib/Vtk/VtkMeshNodalCoordinatesTemplate.h
index 0e124a5befeb681b21cbfd070df1ae3ccc7e63b4..15bd4b72fb076b36bf9b1cdaae97b83d6d8ba97e 100644
--- a/MeshLib/Vtk/VtkMeshNodalCoordinatesTemplate.h
+++ b/MeshLib/Vtk/VtkMeshNodalCoordinatesTemplate.h
@@ -17,8 +17,9 @@
 #define VTKMESHNODALCOORDINATES_H_
 
 #include <vtkMappedDataArray.h>
-#include <vtkTypeTemplate.h>    // For templated vtkObject API
-#include <vtkObjectFactory.h>   // for vtkStandardNewMacro
+#include <vtkObjectFactory.h>  // for vtkStandardNewMacro
+#include <vtkTypeTemplate.h>   // For templated vtkObject API
+#include <vtkVersion.h>
 
 namespace MeshLib
 {
@@ -55,9 +56,7 @@ public:
     void GetTuple(vtkIdType i, double *tuple) override;
     vtkIdType LookupTypedValue(Scalar value) override;
     void LookupTypedValue(Scalar value, vtkIdList *ids) override;
-    Scalar GetValue(vtkIdType idx);
     Scalar& GetValueReference(vtkIdType idx) override;
-    void GetTupleValue(vtkIdType idx, Scalar *t);
 
     // This container is read only -- this method does nothing but print a
     // warning.
@@ -87,13 +86,24 @@ public:
     void RemoveTuple(vtkIdType id) override;
     void RemoveFirstTuple() override;
     void RemoveLastTuple() override;
-    void SetTupleValue(vtkIdType i, const Scalar *t);
-    void InsertTupleValue(vtkIdType i, const Scalar *t);
-    vtkIdType InsertNextTupleValue(const Scalar *t);
     void SetValue(vtkIdType idx, Scalar value) override;
     vtkIdType InsertNextValue(Scalar v) override;
     void InsertValue(vtkIdType idx, Scalar v) override;
 
+#if VTK_MAJOR_VERSION >= 7 && VTK_MINOR_VERSION >= 1
+    Scalar& GetValueReference(vtkIdType idx) const;
+    Scalar GetValue(vtkIdType idx) const override;
+    void GetTypedTuple(vtkIdType idx, Scalar* t) const override;
+    void SetTypedTuple(vtkIdType i, const Scalar* t) override;
+    void InsertTypedTuple(vtkIdType i, const Scalar* t) override;
+    vtkIdType InsertNextTypedTuple(const Scalar* t) override;
+#else
+    Scalar GetValue(vtkIdType idx) override;
+    void GetTupleValue(vtkIdType idx, Scalar* t) override;
+    void SetTupleValue(vtkIdType i, const Scalar* t) override;
+    void InsertTupleValue(vtkIdType i, const Scalar* t) override;
+    vtkIdType InsertNextTupleValue(const Scalar* t) override;
+#endif  // vtk version
 
 protected:
     VtkMeshNodalCoordinatesTemplate();