diff --git a/MeshLib/Elements/Element.h b/MeshLib/Elements/Element.h
index 64e4a3199d43342f626970426a31336f70a55d39..a39e56b781ea6936ab8598664da43a9e660938f3 100644
--- a/MeshLib/Elements/Element.h
+++ b/MeshLib/Elements/Element.h
@@ -19,7 +19,7 @@
 #include <limits>
 #include <boost/optional.hpp>
 
-#include "GeoLib/Point.h"
+#include "MathLib/MathPoint.h"
 
 #include "MeshLib/MeshEnums.h"
 #include "MeshLib/Mesh.h"
@@ -163,11 +163,11 @@ public:
 
 	/**
 	 * Checks if a point is inside the element.
-	 * @param pnt a 3D GeoLib::Point object
+	 * @param pnt a 3D MathLib::MathPoint object
 	 * @param eps tolerance for numerical algorithm used or computing the property
 	 * @return true if the point is not outside the element, false otherwise
 	 */
-	virtual bool isPntInElement(GeoLib::Point const& pnt, double eps = std::numeric_limits<double>::epsilon()) const = 0;
+	virtual bool isPntInElement(MathLib::MathPoint const& pnt, double eps = std::numeric_limits<double>::epsilon()) const = 0;
 
 	/**
 	 * Tests if the element is geometrically valid.
diff --git a/MeshLib/Elements/TemplateHex-impl.h b/MeshLib/Elements/TemplateHex-impl.h
index c48bfd943abd285e75e388d88e2eabe57045075d..5c3713d7d956308c5f3efd8c89f65e37537091a5 100644
--- a/MeshLib/Elements/TemplateHex-impl.h
+++ b/MeshLib/Elements/TemplateHex-impl.h
@@ -141,7 +141,7 @@ bool TemplateHex<NNODES,CELLHEXTYPE>::isEdge(unsigned idx1, unsigned idx2) const
 }
 
 template <unsigned NNODES, CellType CELLHEXTYPE>
-bool TemplateHex<NNODES,CELLHEXTYPE>::isPntInElement(GeoLib::Point const& pnt, double eps) const
+bool TemplateHex<NNODES,CELLHEXTYPE>::isPntInElement(MathLib::MathPoint const& pnt, double eps) const
 {
     return (GeoLib::isPointInTetrahedron(pnt, *_nodes[4], *_nodes[7], *_nodes[5], *_nodes[0], eps) ||
             GeoLib::isPointInTetrahedron(pnt, *_nodes[5], *_nodes[3], *_nodes[1], *_nodes[0], eps) ||
diff --git a/MeshLib/Elements/TemplateHex.h b/MeshLib/Elements/TemplateHex.h
index 527c67a3733c35052ff6d273bd4ebb94ae977736..5aa4a0dc61f8f34c00a1fc77b1f30e4b9d63dc5c 100644
--- a/MeshLib/Elements/TemplateHex.h
+++ b/MeshLib/Elements/TemplateHex.h
@@ -112,11 +112,11 @@ public:
 
     /**
 	 * Checks if a point is inside the element.
-	 * @param pnt a 3D GeoLib::Point object
+	 * @param pnt a 3D MathLib::MathPoint object
 	 * @param eps tolerance for numerical algorithm used or computing the property
 	 * @return true if the point is not outside the element, false otherwise
 	 */
-    bool isPntInElement(GeoLib::Point const& pnt, double eps = std::numeric_limits<double>::epsilon()) const;
+    bool isPntInElement(MathLib::MathPoint const& pnt, double eps = std::numeric_limits<double>::epsilon()) const;
 
 	/**
 	 * Tests if the element is geometrically valid.
diff --git a/MeshLib/Elements/TemplateLine-impl.h b/MeshLib/Elements/TemplateLine-impl.h
index bf362aa4a83f1baf7c8c4d00ca831f150b5ec132..56c36c2f5e8ea0c1c331a78d945fcbff0ec5776c 100644
--- a/MeshLib/Elements/TemplateLine-impl.h
+++ b/MeshLib/Elements/TemplateLine-impl.h
@@ -56,7 +56,7 @@ TemplateLine<NNODES,CELLLINETYPE>::~TemplateLine()
 {}
 
 template <unsigned NNODES, CellType CELLLINETYPE>
-bool TemplateLine<NNODES,CELLLINETYPE>::isPntInElement(GeoLib::Point const& pnt, double eps) const
+bool TemplateLine<NNODES,CELLLINETYPE>::isPntInElement(MathLib::MathPoint const& pnt, double eps) const
 {
     double tmp;
     double tmp_dst(0);
diff --git a/MeshLib/Elements/TemplateLine.h b/MeshLib/Elements/TemplateLine.h
index 34d6650ecb0faedbca2453afc5fc33c98da8221d..8f8d7130122fa9cedc90eef8510d295f732f8dd9 100644
--- a/MeshLib/Elements/TemplateLine.h
+++ b/MeshLib/Elements/TemplateLine.h
@@ -123,11 +123,11 @@ public:
 
 	/**
 	 * Checks if a point is located on the line
-	 * @param pnt a 3D GeoLib::Point object
+	 * @param pnt a 3D MathLib::MathPoint object
 	 * @param eps tolerance for numerical algorithm used or computing the property
 	 * @return true if the point is located on the line, false otherwise
 	 */
-	bool isPntInElement(GeoLib::Point const& pnt, double eps = std::numeric_limits<double>::epsilon()) const;
+	bool isPntInElement(MathLib::MathPoint const& pnt, double eps = std::numeric_limits<double>::epsilon()) const;
 
 	/**
 		* Tests if the element is geometrically valid.
diff --git a/MeshLib/Elements/TemplatePrism-impl.h b/MeshLib/Elements/TemplatePrism-impl.h
index 495fdfcc0d7662d65136ef578976313b59bccc9f..24b8c01a231fcbc8c04d8d3edfd6904d294033b1 100644
--- a/MeshLib/Elements/TemplatePrism-impl.h
+++ b/MeshLib/Elements/TemplatePrism-impl.h
@@ -148,7 +148,7 @@ bool TemplatePrism<NNODES,CELLPRISMTYPE>::isEdge(unsigned idx1, unsigned idx2) c
 }
 
 template <unsigned NNODES, CellType CELLPRISMTYPE>
-bool TemplatePrism<NNODES,CELLPRISMTYPE>::isPntInElement(GeoLib::Point const& pnt, double eps) const
+bool TemplatePrism<NNODES,CELLPRISMTYPE>::isPntInElement(MathLib::MathPoint const& pnt, double eps) const
 {
     return (GeoLib::isPointInTetrahedron(pnt, *_nodes[0], *_nodes[1], *_nodes[2], *_nodes[3], eps) ||
             GeoLib::isPointInTetrahedron(pnt, *_nodes[1], *_nodes[4], *_nodes[2], *_nodes[3], eps) ||
diff --git a/MeshLib/Elements/TemplatePrism.h b/MeshLib/Elements/TemplatePrism.h
index 1db0c133b533c0e6725c5942163d5d4f40ac17c3..064099b39ad1e36b8af2b0eedc3a65e7eb3c6801 100644
--- a/MeshLib/Elements/TemplatePrism.h
+++ b/MeshLib/Elements/TemplatePrism.h
@@ -110,11 +110,11 @@ public:
 
 	/**
 	 * Checks if a point is inside the element.
-	 * @param pnt a 3D GeoLib::Point object
+	 * @param pnt a 3D MathLib::MathPoint object
 	 * @param eps tolerance for numerical algorithm used or computing the property
 	 * @return true if the point is not outside the element, false otherwise
 	 */
-	bool isPntInElement(GeoLib::Point const& pnt, double eps = std::numeric_limits<double>::epsilon()) const;
+	bool isPntInElement(MathLib::MathPoint const& pnt, double eps = std::numeric_limits<double>::epsilon()) const;
 
 	/**
 	 * Tests if the element is geometrically valid.
diff --git a/MeshLib/Elements/TemplatePyramid-impl.h b/MeshLib/Elements/TemplatePyramid-impl.h
index f6ba1816f042707ed91c98ab53c7fb4485a53ad6..704b03aa216841cde6b7df6df376adcf1edd6b93 100644
--- a/MeshLib/Elements/TemplatePyramid-impl.h
+++ b/MeshLib/Elements/TemplatePyramid-impl.h
@@ -150,7 +150,7 @@ bool TemplatePyramid<NNODES,CELLPYRAMIDTYPE>::isEdge(unsigned idx1, unsigned idx
 }
 
 template <unsigned NNODES, CellType CELLPYRAMIDTYPE>
-bool TemplatePyramid<NNODES,CELLPYRAMIDTYPE>::isPntInElement(GeoLib::Point const& pnt, double eps) const
+bool TemplatePyramid<NNODES,CELLPYRAMIDTYPE>::isPntInElement(MathLib::MathPoint const& pnt, double eps) const
 {
     return (GeoLib::isPointInTetrahedron(pnt, *_nodes[0], *_nodes[1], *_nodes[2], *_nodes[4], eps) ||
             GeoLib::isPointInTetrahedron(pnt, *_nodes[0], *_nodes[2], *_nodes[3], *_nodes[4], eps));
diff --git a/MeshLib/Elements/TemplatePyramid.h b/MeshLib/Elements/TemplatePyramid.h
index 2fda4d48add740073e6e9037668fa3cd5e56a162..a50851c05f1b6e34bebee2d47d812e4a3cd5bfa6 100644
--- a/MeshLib/Elements/TemplatePyramid.h
+++ b/MeshLib/Elements/TemplatePyramid.h
@@ -108,11 +108,11 @@ public:
 
 	/**
 	 * Checks if a point is inside the element.
-	 * @param pnt a 3D GeoLib::Point object
+	 * @param pnt a 3D MathLib::MathPoint object
 	 * @param eps tolerance for numerical algorithm used or computing the property
 	 * @return true if the point is not outside the element, false otherwise
 	 */
-	bool isPntInElement(GeoLib::Point const& pnt, double eps = std::numeric_limits<double>::epsilon()) const;
+	bool isPntInElement(MathLib::MathPoint const& pnt, double eps = std::numeric_limits<double>::epsilon()) const;
 
 	/**
 	 * Tests if the element is geometrically valid.
diff --git a/MeshLib/Elements/TemplateQuad-impl.h b/MeshLib/Elements/TemplateQuad-impl.h
index 88b3e2a63eee9b02ab1eda1c8db76ae5fef3ad3a..f993842b0d0036c29f88999e31a2a8eb8cb38f4f 100644
--- a/MeshLib/Elements/TemplateQuad-impl.h
+++ b/MeshLib/Elements/TemplateQuad-impl.h
@@ -104,7 +104,7 @@ bool TemplateQuad<NNODES,CELLQUADTYPE>::isEdge(unsigned idx1, unsigned idx2) con
 }
 
 template <unsigned NNODES, CellType CELLQUADTYPE>
-bool TemplateQuad<NNODES,CELLQUADTYPE>::isPntInElement(GeoLib::Point const& pnt, double eps) const
+bool TemplateQuad<NNODES,CELLQUADTYPE>::isPntInElement(MathLib::MathPoint const& pnt, double eps) const
 {
 	return (GeoLib::isPointInTriangle(pnt, *_nodes[0], *_nodes[1], *_nodes[2], eps) ||
 	        GeoLib::isPointInTriangle(pnt, *_nodes[0], *_nodes[2], *_nodes[3], eps));
diff --git a/MeshLib/Elements/TemplateQuad.h b/MeshLib/Elements/TemplateQuad.h
index c761aa803ada30c28ae3f5734fc581c669567625..e5058a8b299aebd1f5641c9b9c1e8d119c9b60ee 100644
--- a/MeshLib/Elements/TemplateQuad.h
+++ b/MeshLib/Elements/TemplateQuad.h
@@ -97,11 +97,11 @@ public:
 
 	/**
 	 * Checks if a point is inside the element.
-	 * @param pnt a 3D GeoLib::Point object
+	 * @param pnt a 3D MathLib::MathPoint object
 	 * @param eps tolerance for numerical algorithm used or computing the property
 	 * @return true if the point is not outside the element, false otherwise
 	 */
-	bool isPntInElement(GeoLib::Point const& pnt, double eps = std::numeric_limits<double>::epsilon()) const;
+	bool isPntInElement(MathLib::MathPoint const& pnt, double eps = std::numeric_limits<double>::epsilon()) const;
 
 	/**
 	 * Tests if the element is geometrically valid.
diff --git a/MeshLib/Elements/TemplateTet-impl.h b/MeshLib/Elements/TemplateTet-impl.h
index 387b2718e1c9cf60809f6b78363264e8c19dc580..5ff0d13e772a19a57242aa14a453ebfeb9e6441e 100644
--- a/MeshLib/Elements/TemplateTet-impl.h
+++ b/MeshLib/Elements/TemplateTet-impl.h
@@ -128,7 +128,7 @@ bool TemplateTet<NNODES,CELLTETTYPE>::isEdge(unsigned idx1, unsigned idx2) const
 }
 
 template <unsigned NNODES, CellType CELLTETTYPE>
-bool TemplateTet<NNODES,CELLTETTYPE>::isPntInElement(GeoLib::Point const& pnt, double eps) const
+bool TemplateTet<NNODES,CELLTETTYPE>::isPntInElement(MathLib::MathPoint const& pnt, double eps) const
 {
     return GeoLib::isPointInTetrahedron(pnt, *_nodes[0], *_nodes[1], *_nodes[2], *_nodes[3], eps);
 }
diff --git a/MeshLib/Elements/TemplateTet.h b/MeshLib/Elements/TemplateTet.h
index 541b435ee1195c7bea17458795bd79377f14f142..aad0a51b77145a794d46eca5655527df665890f9 100644
--- a/MeshLib/Elements/TemplateTet.h
+++ b/MeshLib/Elements/TemplateTet.h
@@ -107,11 +107,11 @@ public:
 
 	/**
 	 * Checks if a point is inside the element.
-	 * @param pnt a 3D GeoLib::Point object
+	 * @param pnt a 3D MathLib::MathPoint object
 	 * @param eps tolerance for numerical algorithm used or computing the property
 	 * @return true if the point is not outside the element, false otherwise
 	 */
-	bool isPntInElement(GeoLib::Point const& pnt, double eps = std::numeric_limits<double>::epsilon()) const;
+	bool isPntInElement(MathLib::MathPoint const& pnt, double eps = std::numeric_limits<double>::epsilon()) const;
 
 	/**
 	 * Tests if the element is geometrically valid.
diff --git a/MeshLib/Elements/TemplateTri-impl.h b/MeshLib/Elements/TemplateTri-impl.h
index e9f20ccaa5c1869ad5f62ad81aa43b32318c8e2e..6951024d8b6141f9a909b43e4a9ab14cb9de6d07 100644
--- a/MeshLib/Elements/TemplateTri-impl.h
+++ b/MeshLib/Elements/TemplateTri-impl.h
@@ -85,7 +85,7 @@ bool TemplateTri<NNODES,CELLTRITYPE>::isEdge(unsigned idx1, unsigned idx2) const
 }
 
 template <unsigned NNODES, CellType CELLTRITYPE>
-bool TemplateTri<NNODES,CELLTRITYPE>::isPntInElement(GeoLib::Point const& pnt, double eps) const
+bool TemplateTri<NNODES,CELLTRITYPE>::isPntInElement(MathLib::MathPoint const& pnt, double eps) const
 {
 	return GeoLib::isPointInTriangle(pnt, *_nodes[0], *_nodes[1], *_nodes[2], eps);
 }
diff --git a/MeshLib/Elements/TemplateTri.h b/MeshLib/Elements/TemplateTri.h
index a2f96495952feea47829a8f22eabc6e3362055ae..c4b887d0af8606791b2460c1f500fd592af9aaff 100644
--- a/MeshLib/Elements/TemplateTri.h
+++ b/MeshLib/Elements/TemplateTri.h
@@ -103,11 +103,11 @@ public:
 
 	/**
 	 * Checks if a point is inside the element.
-	 * @param pnt a 3D GeoLib::Point object
+	 * @param pnt a 3D MathLib::MathPoint object
 	 * @param eps tolerance for numerical algorithm used or computing the property
 	 * @return true if the point is not outside the element, false otherwise
 	 */
-	bool isPntInElement(GeoLib::Point const& pnt, double eps = std::numeric_limits<double>::epsilon()) const;
+	bool isPntInElement(MathLib::MathPoint const& pnt, double eps = std::numeric_limits<double>::epsilon()) const;
 
 	/**
 	 * Tests if the element is geometrically valid