diff --git a/GeoLib/Point.h b/GeoLib/Point.h
index b93c37fa189088f91d54206744e7aa700e11ccbb..79bd05c9a2d222f78e19f33fcbecc17136cb35ac 100644
--- a/GeoLib/Point.h
+++ b/GeoLib/Point.h
@@ -61,7 +61,6 @@ protected:
     void setID(std::size_t id) { _id = id; }
 };
 
-extern const Point ORIGIN;
 }
 
 #endif /* POINT_H_ */
diff --git a/GeoLib/Point.cpp b/MathLib/Point3d.cpp
similarity index 76%
rename from GeoLib/Point.cpp
rename to MathLib/Point3d.cpp
index 3eb8bfb1f32ae2e8d10904585d94dfc1b9656ef4..f48d71324b633fb550aee60b59614aebd70a6b19 100644
--- a/GeoLib/Point.cpp
+++ b/MathLib/Point3d.cpp
@@ -9,9 +9,9 @@
  *
  */
 
-#include "Point.h"
+#include "Point3d.h"
 
-namespace GeoLib
+namespace MathLib
 {
-    const Point ORIGIN(0, 0, 0);
+extern const Point3d ORIGIN{ {{0.0, 0.0, 0.0}} };
 }
diff --git a/MathLib/Point3d.h b/MathLib/Point3d.h
index 5d19c81b771a767a6c6656b1826ad7e61607d31e..e4797cc3786212d2eaa9860a44d1e07bd6fa429a 100644
--- a/MathLib/Point3d.h
+++ b/MathLib/Point3d.h
@@ -23,6 +23,7 @@ namespace MathLib
 {
 typedef MathLib::TemplatePoint<double,3> Point3d;
 
+extern const Point3d ORIGIN;
 /**
  * rotation of points
  * @param mat a rotation matrix
diff --git a/MeshLib/Elements/EdgeRule.h b/MeshLib/Elements/EdgeRule.h
index e7cd1e02598f478fb60b9603d09c8dbcc19d610b..4cc0c48fecfacde8cf9e1bd6f5586899cc2a0bc1 100644
--- a/MeshLib/Elements/EdgeRule.h
+++ b/MeshLib/Elements/EdgeRule.h
@@ -27,9 +27,6 @@ public:
     /// Constant: The number of edges
     static const unsigned n_edges = 0;
 
-    /// Get the number of nodes for face i.
-    static unsigned getNumberOfFaceNodes(unsigned /*i*/) { return 0; }
-
     /// Returns the i-th face of the element.
     static const Element* getFace(const Element* /*e*/, unsigned /*i*/) { return nullptr; }
 
diff --git a/MeshLib/Elements/Element.h b/MeshLib/Elements/Element.h
index ec6ce23d86fdc391f83160975b70b501fd4ec1df..7e86c12a3fb4c9b1e350de9379a0b197546f995c 100644
--- a/MeshLib/Elements/Element.h
+++ b/MeshLib/Elements/Element.h
@@ -34,8 +34,7 @@ class Node;
  */
 class Element
 {
-    /* friend classes */
-    friend class Mesh;//void Mesh::setElementInformationForNodes();
+    friend class Mesh;
 
 public:
     /// Compute the minimum and maximum squared edge length for this element
@@ -94,9 +93,6 @@ public:
     /// Get the number of edges for this element.
     virtual unsigned getNumberOfEdges() const = 0;
 
-    /// Get the number of nodes for face i.
-    virtual unsigned getNumberOfFaceNodes(unsigned i) const = 0;
-
     /// Get the number of faces for this element.
     virtual unsigned getNumberOfFaces() const = 0;
 
diff --git a/MeshLib/Elements/FaceRule.h b/MeshLib/Elements/FaceRule.h
index fec27ce93157aa14ddea701980ee053867c7b06f..2b612af040983024e1f4f9f40d3dc984026b678a 100644
--- a/MeshLib/Elements/FaceRule.h
+++ b/MeshLib/Elements/FaceRule.h
@@ -25,9 +25,6 @@ public:
     /// Returns the face i of the element.
     static const Element* getFace(const Element* e, unsigned i) { return e->getEdge(i); }
 
-    /// Get the number of nodes for face i.
-    static unsigned getNumberOfFaceNodes(unsigned /*i*/) { return 2; }
-
     /// Constant: The number of faces
     static const unsigned n_faces = 0;
 
diff --git a/MeshLib/Elements/HexRule20.h b/MeshLib/Elements/HexRule20.h
index b3a46bfb7f4f68a734d9c2cfca373a2c433c0c0c..92045b17aa60294f02b62bf6c0470a4129fbdf06 100644
--- a/MeshLib/Elements/HexRule20.h
+++ b/MeshLib/Elements/HexRule20.h
@@ -61,9 +61,6 @@ public:
     /// Returns the i-th edge of the element.
     typedef QuadraticEdgeReturn EdgeReturn;
 
-    /// Get the number of nodes for face i.
-    static unsigned getNumberOfFaceNodes(unsigned /*i*/) { return 8; }
-
     /// Returns the i-th face of the element.
     static const Element* getFace(const Element* e, unsigned i);
 
diff --git a/MeshLib/Elements/HexRule8.h b/MeshLib/Elements/HexRule8.h
index dd8c40619bb7e4585d9356d5a13a4de6db6674e7..9c6bbf64ca8e99ffbe2829f8baffc2a94b89d9ba 100644
--- a/MeshLib/Elements/HexRule8.h
+++ b/MeshLib/Elements/HexRule8.h
@@ -76,9 +76,6 @@ public:
     /// Returns the i-th edge of the element.
     typedef LinearEdgeReturn EdgeReturn;
 
-    /// Get the number of nodes for face i.
-    static unsigned getNumberOfFaceNodes(unsigned /*i*/) { return 4; }
-
     /// Returns the i-th face of the element.
     static const Element* getFace(const Element* e, unsigned i);
 
diff --git a/MeshLib/Elements/PrismRule15.cpp b/MeshLib/Elements/PrismRule15.cpp
index 80e24a8b474e3eef67da6f1399327ef50be097fb..4031802c356dee3fface5ce6736b70c1810b91d8 100644
--- a/MeshLib/Elements/PrismRule15.cpp
+++ b/MeshLib/Elements/PrismRule15.cpp
@@ -41,19 +41,11 @@ const unsigned PrismRule15::edge_nodes[9][3] =
 
 const unsigned PrismRule15::n_face_nodes[5] = { 6, 8, 8, 8, 6 };
 
-unsigned PrismRule15::getNumberOfFaceNodes(unsigned i)
-{
-    if (i<5)
-        return n_face_nodes[i];
-    ERR("Error in MeshLib::Element::getNumberOfFaceNodes() - Index %d does not exist.", i);
-    return 0;
-}
-
 const Element* PrismRule15::getFace(const Element* e, unsigned i)
 {
     if (i < n_faces)
     {
-        unsigned nFaceNodes (e->getNumberOfFaceNodes(i));
+        unsigned nFaceNodes(PrismRule15::n_face_nodes[i]);
         Node** nodes = new Node*[nFaceNodes];
         for (unsigned j=0; j<nFaceNodes; j++)
             nodes[j] = const_cast<Node*>(e->getNode(face_nodes[i][j]));
diff --git a/MeshLib/Elements/PrismRule15.h b/MeshLib/Elements/PrismRule15.h
index 740cd0d4fbaee76cdfa33e8c9724e10c6e30ee77..6eed3e97a4e2a83295e43d9fc9c7df84464dc309 100644
--- a/MeshLib/Elements/PrismRule15.h
+++ b/MeshLib/Elements/PrismRule15.h
@@ -62,9 +62,6 @@ public:
     /// Returns the i-th edge of the element.
     typedef QuadraticEdgeReturn EdgeReturn;
 
-    /// Get the number of nodes for face i.
-    static unsigned getNumberOfFaceNodes(unsigned i);
-
     /// Returns the i-th face of the element.
     static const Element* getFace(const Element* e, unsigned i);
 
diff --git a/MeshLib/Elements/PrismRule6.cpp b/MeshLib/Elements/PrismRule6.cpp
index 33dcd3688605eac7e5430f7665f0fc048f6370e4..46e227b2360b9fb1c9d08061d858c3d3ac1e9eb8 100644
--- a/MeshLib/Elements/PrismRule6.cpp
+++ b/MeshLib/Elements/PrismRule6.cpp
@@ -43,19 +43,11 @@ const unsigned PrismRule6::edge_nodes[9][2] =
 
 const unsigned PrismRule6::n_face_nodes[5] = { 3, 4, 4, 4, 3 };
 
-unsigned PrismRule6::getNumberOfFaceNodes(unsigned i)
-{
-    if (i<5)
-        return n_face_nodes[i];
-    ERR("Error in MeshLib::Element::getNumberOfFaceNodes() - Index %d does not exist.", i);
-    return 0;
-}
-
 const Element* PrismRule6::getFace(const Element* e, unsigned i)
 {
     if (i < n_faces)
     {
-        unsigned nFaceNodes (e->getNumberOfFaceNodes(i));
+        unsigned nFaceNodes(PrismRule6::n_face_nodes[i]);
         Node** nodes = new Node*[nFaceNodes];
         for (unsigned j=0; j<nFaceNodes; j++)
             nodes[j] = const_cast<Node*>(e->getNode(face_nodes[i][j]));
diff --git a/MeshLib/Elements/PrismRule6.h b/MeshLib/Elements/PrismRule6.h
index 08ab94f48023ee5f10c9397c2e98a78c9324e63e..0630d52ecfe8994f218036ce8d8985f38ad0ba4e 100644
--- a/MeshLib/Elements/PrismRule6.h
+++ b/MeshLib/Elements/PrismRule6.h
@@ -77,9 +77,6 @@ public:
     /// Returns the i-th edge of the element.
     typedef LinearEdgeReturn EdgeReturn;
 
-    /// Get the number of nodes for face i.
-    static unsigned getNumberOfFaceNodes(unsigned i);
-
     /// Returns the i-th face of the element.
     static const Element* getFace(const Element* e, unsigned i);
 
diff --git a/MeshLib/Elements/PyramidRule13.cpp b/MeshLib/Elements/PyramidRule13.cpp
index 03329440a83e2b19be0cf9a0c4118dc9329cb607..941f693ca459a74eb46a4e7c4df98fc3af9877ba 100644
--- a/MeshLib/Elements/PyramidRule13.cpp
+++ b/MeshLib/Elements/PyramidRule13.cpp
@@ -40,19 +40,11 @@ const unsigned PyramidRule13::edge_nodes[8][3] =
 
 const unsigned PyramidRule13::n_face_nodes[5] = { 6, 6, 6, 6, 8 };
 
-unsigned PyramidRule13::getNumberOfFaceNodes(unsigned i)
-{
-    if (i<5)
-        return n_face_nodes[i];
-    ERR("Error in MeshLib::Element::getNumberOfFaceNodes() - Index %d does not exist.", i);
-    return 0;
-}
-
 const Element* PyramidRule13::getFace(const Element* e, unsigned i)
 {
     if (i<e->getNumberOfFaces())
     {
-        unsigned nFaceNodes (e->getNumberOfFaceNodes(i));
+        unsigned nFaceNodes(PyramidRule13::n_face_nodes[i]);
         Node** nodes = new Node*[nFaceNodes];
         for (unsigned j=0; j<nFaceNodes; j++)
             nodes[j] = const_cast<Node*>(e->getNode(face_nodes[i][j]));
diff --git a/MeshLib/Elements/PyramidRule13.h b/MeshLib/Elements/PyramidRule13.h
index b5bf9c2bccbd2193225956cb21d4c7cdcb401926..b9230293730df1cd0e61f28bc90e0bfb51120e8f 100644
--- a/MeshLib/Elements/PyramidRule13.h
+++ b/MeshLib/Elements/PyramidRule13.h
@@ -61,9 +61,6 @@ public:
     /// Returns the i-th edge of the element.
     typedef QuadraticEdgeReturn EdgeReturn;
 
-    /// Get the number of nodes for face i.
-    static unsigned getNumberOfFaceNodes(unsigned i);
-
     /// Returns the i-th face of the element.
     static const Element* getFace(const Element* e, unsigned i);
 
diff --git a/MeshLib/Elements/PyramidRule5.cpp b/MeshLib/Elements/PyramidRule5.cpp
index 476aad78092d513778b38857b04095c8435518ef..2ee24c2cfd51c6a198c40cff675131b1579df584 100644
--- a/MeshLib/Elements/PyramidRule5.cpp
+++ b/MeshLib/Elements/PyramidRule5.cpp
@@ -42,19 +42,11 @@ const unsigned PyramidRule5::edge_nodes[8][2] =
 
 const unsigned PyramidRule5::n_face_nodes[5] = { 3, 3, 3, 3, 4 };
 
-unsigned PyramidRule5::getNumberOfFaceNodes(unsigned i)
-{
-    if (i<5)
-        return n_face_nodes[i];
-    ERR("Error in MeshLib::Element::getNumberOfFaceNodes() - Index %d does not exist.", i);
-    return 0;
-}
-
 const Element* PyramidRule5::getFace(const Element* e, unsigned i)
 {
     if (i<e->getNumberOfFaces())
     {
-        unsigned nFaceNodes (e->getNumberOfFaceNodes(i));
+        unsigned nFaceNodes(PyramidRule5::n_face_nodes[i]);
         Node** nodes = new Node*[nFaceNodes];
         for (unsigned j=0; j<nFaceNodes; j++)
             nodes[j] = const_cast<Node*>(e->getNode(face_nodes[i][j]));
diff --git a/MeshLib/Elements/PyramidRule5.h b/MeshLib/Elements/PyramidRule5.h
index 6e268e55de5a30e8b75bee8bb06ba13f231e9b0e..803723984e065b4e90ba6f76f879e96e4d5d3462 100644
--- a/MeshLib/Elements/PyramidRule5.h
+++ b/MeshLib/Elements/PyramidRule5.h
@@ -76,9 +76,6 @@ public:
     /// Returns the i-th edge of the element.
     typedef LinearEdgeReturn EdgeReturn;
 
-    /// Get the number of nodes for face i.
-    static unsigned getNumberOfFaceNodes(unsigned i);
-
     /// Returns the i-th face of the element.
     static const Element* getFace(const Element* e, unsigned i);
 
diff --git a/MeshLib/Elements/TemplateElement.h b/MeshLib/Elements/TemplateElement.h
index 98e4ed3c57629a4c6e86449495a6b5b2e2b00bc0..cf178cbf7b3bbd9f439c558be90a1895934b2064 100644
--- a/MeshLib/Elements/TemplateElement.h
+++ b/MeshLib/Elements/TemplateElement.h
@@ -81,9 +81,6 @@ public:
     /// Get the number of edges for this element.
     unsigned getNumberOfEdges() const { return ELEMENT_RULE::n_edges; }
 
-    /// Get the number of nodes for face i.
-    unsigned getNumberOfFaceNodes(unsigned i) const { return ELEMENT_RULE::getNumberOfFaceNodes(i); }
-
     /// Get the number of faces for this element.
     unsigned getNumberOfFaces() const { return ELEMENT_RULE::n_faces; }
 
diff --git a/MeshLib/Elements/TetRule10.h b/MeshLib/Elements/TetRule10.h
index dcd7ede80878e17d378d4a1f513780ebd5fc9c2f..2657fa3b53e7a069c9b71acc5b10e3a37e8db195 100644
--- a/MeshLib/Elements/TetRule10.h
+++ b/MeshLib/Elements/TetRule10.h
@@ -56,9 +56,6 @@ public:
     /// Returns the i-th edge of the element.
     typedef QuadraticEdgeReturn EdgeReturn;
 
-    /// Get the number of nodes for face i.
-    static unsigned getNumberOfFaceNodes(unsigned /*i*/) { return 6; }
-
     /// Returns the i-th face of the element.
     static const Element* getFace(const Element* e, unsigned i);
 
diff --git a/MeshLib/Elements/TetRule4.h b/MeshLib/Elements/TetRule4.h
index ddee10f6122559bb60e9f3e3115c290ac45a4481..53927c6272d4f0767ab7e6e0fc6316ef77fd8fd8 100644
--- a/MeshLib/Elements/TetRule4.h
+++ b/MeshLib/Elements/TetRule4.h
@@ -71,9 +71,6 @@ public:
     /// Returns the i-th edge of the element.
     typedef LinearEdgeReturn EdgeReturn;
 
-    /// Get the number of nodes for face i.
-    static unsigned getNumberOfFaceNodes(unsigned /*i*/) { return 3; }
-
     /// Returns the i-th face of the element.
     static const Element* getFace(const Element* e, unsigned i);
 
diff --git a/MeshLib/Elements/VertexRule.h b/MeshLib/Elements/VertexRule.h
index d609015f59445a12b3ddee3d5ae10ecb60803933..e4c894d55580798dd45a5337e0ac0ff2ff30168f 100644
--- a/MeshLib/Elements/VertexRule.h
+++ b/MeshLib/Elements/VertexRule.h
@@ -27,12 +27,6 @@ public:
     /// Constant: The number of edges
     static const unsigned n_edges = 0;
 
-    /// Get the number of nodes for face i.
-    static unsigned getNumberOfFaceNodes(unsigned /*i*/)
-    {
-        return 0;
-    }
-
     /// Returns the i-th face of the element.
     static const Element* getFace(const Element* /*e*/, unsigned /*i*/)
     {
diff --git a/MeshLib/IO/Legacy/MeshIO.cpp b/MeshLib/IO/Legacy/MeshIO.cpp
index eab8548fb5cd5e9452d232a782ada38bc594136a..016fd45177ce0e427ad04ce187de62f6dae5c086 100644
--- a/MeshLib/IO/Legacy/MeshIO.cpp
+++ b/MeshLib/IO/Legacy/MeshIO.cpp
@@ -19,6 +19,7 @@
 #include "MeshIO.h"
 
 #include <iomanip>
+#include <memory>
 #include <sstream>
 
 #include <logog/include/logog.hpp>
@@ -26,8 +27,6 @@
 #include "BaseLib/FileTools.h"
 #include "BaseLib/StringTools.h"
 
-#include "GeoLib/GEOObjects.h"
-
 #include "MeshLib/Elements/Elements.h"
 #include "MeshLib/Node.h"
 #include "MeshLib/Location.h"
@@ -39,7 +38,7 @@ namespace IO
 namespace Legacy {
 
 MeshIO::MeshIO()
-    : _mesh(NULL)
+    : _mesh(nullptr)
 {
 }
 
diff --git a/MeshLib/IO/Legacy/MeshIO.h b/MeshLib/IO/Legacy/MeshIO.h
index 8ee1970b94983d58d70fe087951cbc00a5a7be01..54a8148f314f86b880b58668ebe6e23632c56ba9 100644
--- a/MeshLib/IO/Legacy/MeshIO.h
+++ b/MeshLib/IO/Legacy/MeshIO.h
@@ -16,7 +16,6 @@
 #ifndef MESHIO_H_
 #define MESHIO_H_
 
-#include <iosfwd>
 #include <string>
 #include <vector>
 #include <boost/optional.hpp>
diff --git a/MeshLib/Mesh.cpp b/MeshLib/Mesh.cpp
index 0c9e6b9b2c01851e93812edcb3bf45b33bb0e758..0fc3476513caf54b69f6a19fd0cd68e0cdd39e55 100644
--- a/MeshLib/Mesh.cpp
+++ b/MeshLib/Mesh.cpp
@@ -49,7 +49,6 @@ Mesh::Mesh(const std::string &name,
     this->setElementNeighbors();
 
     this->calcEdgeLengthRange();
-    this->calcNodeDistanceRange();
 }
 
 Mesh::Mesh(const Mesh &mesh)
@@ -165,23 +164,6 @@ void Mesh::calcEdgeLengthRange()
     this->_edge_length.second = sqrt(this->_edge_length.second);
 }
 
-void Mesh::calcNodeDistanceRange()
-{
-    this->_node_distance.first  = std::numeric_limits<double>::max();
-    this->_node_distance.second = 0;
-    double min_length(0);
-    double max_length(0);
-    const std::size_t nElems (this->getNumberOfElements());
-    for (std::size_t i=0; i<nElems; ++i)
-    {
-        _elements[i]->computeSqrNodeDistanceRange(min_length, max_length);
-        this->_node_distance.first  = std::min(this->_node_distance.first,  min_length);
-        this->_node_distance.second = std::max(this->_node_distance.second, max_length);
-    }
-    this->_node_distance.first  = sqrt(this->_node_distance.first);
-    this->_node_distance.second = sqrt(this->_node_distance.second);
-}
-
 void Mesh::setElementNeighbors()
 {
     std::vector<Element*> neighbors;
diff --git a/MeshLib/Mesh.h b/MeshLib/Mesh.h
index ea7ef25c85e9581329dcb5e3513ed54796070205..d138bf3553a2c6a33e0b93c40db07bab7b5545d3 100644
--- a/MeshLib/Mesh.h
+++ b/MeshLib/Mesh.h
@@ -78,14 +78,6 @@ public:
     /// Get the maximum edge length over all elements of the mesh.
     double getMaxEdgeLength() const { return _edge_length.second; }
 
-    /// Get the minimum node distance in the mesh.
-    /// The value is calculated from element-wise minimum node distances.
-    double getMinNodeDistance() const { return _node_distance.first; }
-
-    /// Get the maximum node distance over all elements of the mesh.
-    /// The value is calculated from element-wise maximum node distances.
-    double getMaxNodeDistance() const { return _node_distance.second; }
-
     /// Get the number of elements
     std::size_t getNumberOfElements() const { return _elements.size(); }
 
@@ -128,8 +120,6 @@ public:
 protected:
     /// Set the minimum and maximum length over the edges of the mesh.
     void calcEdgeLengthRange();
-    /// Set the minimum and maximum node distances within elements.
-    void calcNodeDistanceRange();
 
     /**
      * Resets the connected elements for the node vector, i.e. removes the old information and
diff --git a/MeshLib/MeshEditing/MeshRevision.cpp b/MeshLib/MeshEditing/MeshRevision.cpp
index 9ab05f9d075848847bef2bd828aa4df1596840ff..259b6e58996dbd37089675b8a331bf7916f03534 100644
--- a/MeshLib/MeshEditing/MeshRevision.cpp
+++ b/MeshLib/MeshEditing/MeshRevision.cpp
@@ -19,7 +19,6 @@
 #include "logog/include/logog.hpp"
 
 #include "GeoLib/Grid.h"
-#include "GeoLib/AnalyticalGeometry.h"
 #include "MathLib/GeometricBasics.h"
 
 #include "MeshLib/Elements/Elements.h"
diff --git a/MeshLib/MeshGenerators/MeshGenerator.cpp b/MeshLib/MeshGenerators/MeshGenerator.cpp
index 1a5819ca04c808dd98e7ed1ff33f72794874503d..c9661b3e1ade09aae952e61e13cb1ea355bb350a 100644
--- a/MeshLib/MeshGenerators/MeshGenerator.cpp
+++ b/MeshLib/MeshGenerators/MeshGenerator.cpp
@@ -25,7 +25,7 @@ namespace MeshLib
 
 std::vector<MeshLib::Node*> MeshGenerator::generateRegularNodes(
     const std::vector<const std::vector<double>*> &vec_xyz_coords,
-    const GeoLib::Point& origin)
+    const MathLib::Point3d& origin)
 {
     std::vector<Node*> nodes;
     nodes.reserve(vec_xyz_coords[0]->size()*vec_xyz_coords[1]->size()*vec_xyz_coords[2]->size());
@@ -47,7 +47,7 @@ std::vector<MeshLib::Node*> MeshGenerator::generateRegularNodes(
 
 std::vector<MeshLib::Node*> MeshGenerator::generateRegularNodes(
     const std::vector<double> &vec_x_coords,
-    const GeoLib::Point& origin)
+    const MathLib::Point3d& origin)
 {
     std::vector<const std::vector<double>*> vec_xyz_coords;
     vec_xyz_coords.push_back(&vec_x_coords);
@@ -60,7 +60,7 @@ std::vector<MeshLib::Node*> MeshGenerator::generateRegularNodes(
 std::vector<MeshLib::Node*> MeshGenerator::generateRegularNodes(
     std::vector<double> &vec_x_coords,
     std::vector<double> &vec_y_coords,
-    const GeoLib::Point& origin)
+    const MathLib::Point3d& origin)
 {
     std::vector<const std::vector<double>*> vec_xyz_coords;
     vec_xyz_coords.push_back(&vec_x_coords);
@@ -75,7 +75,7 @@ std::vector<MeshLib::Node*> MeshGenerator::generateRegularNodes(
     std::vector<double> &vec_x_coords,
     std::vector<double> &vec_y_coords,
     std::vector<double> &vec_z_coords,
-    const GeoLib::Point& origin)
+    const MathLib::Point3d& origin)
 {
     std::vector<const std::vector<double>*> vec_xyz_coords;
     vec_xyz_coords.push_back(&vec_x_coords);
@@ -87,7 +87,7 @@ std::vector<MeshLib::Node*> MeshGenerator::generateRegularNodes(
 std::vector<MeshLib::Node*> MeshGenerator::generateRegularNodes(
     const std::array<unsigned,3> &n_cells,
     const std::array<double,3> &cell_size,
-    const GeoLib::Point& origin)
+    const MathLib::Point3d& origin)
 {
     std::vector<Node*> nodes;
     nodes.reserve((n_cells[0]+1)*(n_cells[1]+1)*(n_cells[2]+1));
@@ -110,7 +110,7 @@ std::vector<MeshLib::Node*> MeshGenerator::generateRegularNodes(
 Mesh* MeshGenerator::generateLineMesh(
     const double length,
     const std::size_t subdivision,
-    const GeoLib::Point& origin,
+    const MathLib::Point3d& origin,
     std::string   const& mesh_name)
 {
     return generateLineMesh(subdivision, length/subdivision, origin, mesh_name);
@@ -119,7 +119,7 @@ Mesh* MeshGenerator::generateLineMesh(
 Mesh* MeshGenerator::generateLineMesh(
     const unsigned n_cells,
     const double   cell_size,
-    GeoLib::Point const& origin,
+    MathLib::Point3d const& origin,
     std::string   const& mesh_name)
 {
     return generateLineMesh(BaseLib::UniformSubdivision(n_cells*cell_size, n_cells), origin, mesh_name);
@@ -127,7 +127,7 @@ Mesh* MeshGenerator::generateLineMesh(
 
 Mesh* MeshGenerator::generateLineMesh(
     const BaseLib::ISubdivision &div,
-    GeoLib::Point const& origin,
+    MathLib::Point3d const& origin,
     std::string const& mesh_name)
 {
     const std::vector<double> vec_x(div());
@@ -152,7 +152,7 @@ Mesh* MeshGenerator::generateLineMesh(
 Mesh* MeshGenerator::generateRegularQuadMesh(
     const double length,
     const std::size_t subdivision,
-    const GeoLib::Point& origin,
+    const MathLib::Point3d& origin,
     std::string const& mesh_name)
 {
     return generateRegularQuadMesh(subdivision, subdivision,
@@ -164,7 +164,7 @@ Mesh* MeshGenerator::generateRegularQuadMesh(
     const double y_length,
     const std::size_t x_subdivision,
     const std::size_t y_subdivision,
-    const GeoLib::Point& origin,
+    const MathLib::Point3d& origin,
     std::string const& mesh_name)
 {
     return generateRegularQuadMesh(x_subdivision, y_subdivision,
@@ -175,7 +175,7 @@ Mesh* MeshGenerator::generateRegularQuadMesh(
     const unsigned n_x_cells,
     const unsigned n_y_cells,
     const double cell_size,
-    GeoLib::Point const& origin,
+    MathLib::Point3d const& origin,
     std::string const& mesh_name)
 {
     return generateRegularQuadMesh(n_x_cells, n_y_cells, cell_size, cell_size, origin, mesh_name);
@@ -186,7 +186,7 @@ Mesh* MeshGenerator::generateRegularQuadMesh(
     const unsigned n_y_cells,
     const double cell_size_x,
     const double cell_size_y,
-    GeoLib::Point const& origin,
+    MathLib::Point3d const& origin,
     std::string const& mesh_name)
 {
     return generateRegularQuadMesh(BaseLib::UniformSubdivision(n_x_cells*cell_size_x, n_x_cells),
@@ -196,7 +196,7 @@ Mesh* MeshGenerator::generateRegularQuadMesh(
 Mesh* MeshGenerator::generateRegularQuadMesh(
     const BaseLib::ISubdivision &div_x,
     const BaseLib::ISubdivision &div_y,
-    GeoLib::Point const& origin,
+    MathLib::Point3d const& origin,
     std::string const& mesh_name)
 {
     std::vector<double> vec_x(div_x());
@@ -231,7 +231,7 @@ Mesh* MeshGenerator::generateRegularQuadMesh(
 Mesh* MeshGenerator::generateRegularHexMesh(
     const double length,
     const std::size_t subdivision,
-    const GeoLib::Point& origin,
+    const MathLib::Point3d& origin,
     std::string const& mesh_name)
 {
     return MeshGenerator::generateRegularHexMesh(subdivision, subdivision,
@@ -245,7 +245,7 @@ Mesh* MeshGenerator::generateRegularHexMesh(
     const std::size_t x_subdivision,
     const std::size_t y_subdivision,
     const std::size_t z_subdivision,
-    const GeoLib::Point& origin,
+    const MathLib::Point3d& origin,
     std::string const& mesh_name)
 {
     return MeshGenerator::generateRegularHexMesh(x_subdivision, y_subdivision, z_subdivision,
@@ -257,7 +257,7 @@ Mesh* MeshGenerator::generateRegularHexMesh(
     const unsigned n_y_cells,
     const unsigned n_z_cells,
     const double   cell_size,
-    GeoLib::Point const& origin,
+    MathLib::Point3d const& origin,
     std::string   const& mesh_name)
 {
     return MeshGenerator::generateRegularHexMesh(n_x_cells, n_y_cells, n_z_cells,
@@ -271,7 +271,7 @@ Mesh* MeshGenerator::generateRegularHexMesh(
     const double   cell_size_x,
     const double   cell_size_y,
     const double   cell_size_z,
-    GeoLib::Point const& origin,
+    MathLib::Point3d const& origin,
     std::string   const& mesh_name)
 {
     return generateRegularHexMesh(
@@ -285,7 +285,7 @@ Mesh* MeshGenerator::generateRegularHexMesh(
     const BaseLib::ISubdivision &div_x,
     const BaseLib::ISubdivision &div_y,
     const BaseLib::ISubdivision &div_z,
-    GeoLib::Point const& origin,
+    MathLib::Point3d const& origin,
     std::string const& mesh_name)
 {
     std::vector<double> vec_x(div_x());
@@ -335,7 +335,7 @@ Mesh* MeshGenerator::generateRegularHexMesh(
 Mesh* MeshGenerator::generateRegularTriMesh(
     const double length,
     const std::size_t subdivision,
-    const GeoLib::Point& origin,
+    const MathLib::Point3d& origin,
     std::string const& mesh_name)
 {
     return generateRegularTriMesh(subdivision, subdivision, length/subdivision, origin, mesh_name);
@@ -346,7 +346,7 @@ Mesh* MeshGenerator::generateRegularTriMesh(
     const double y_length,
     const std::size_t x_subdivision,
     const std::size_t y_subdivision,
-    const GeoLib::Point& origin,
+    const MathLib::Point3d& origin,
     std::string const& mesh_name)
 {
     return generateRegularTriMesh(x_subdivision, y_subdivision, x_length/x_subdivision, y_length/y_subdivision, origin, mesh_name);
@@ -356,7 +356,7 @@ Mesh* MeshGenerator::generateRegularTriMesh(
     const unsigned n_x_cells,
     const unsigned n_y_cells,
     const double cell_size,
-    GeoLib::Point const& origin,
+    MathLib::Point3d const& origin,
     std::string const& mesh_name)
 {
     return generateRegularTriMesh(n_x_cells, n_y_cells, cell_size, cell_size, origin, mesh_name);
@@ -367,7 +367,7 @@ Mesh* MeshGenerator::generateRegularTriMesh(
     const unsigned n_y_cells,
     const double   cell_size_x,
     const double   cell_size_y,
-    GeoLib::Point const& origin,
+    MathLib::Point3d const& origin,
     std::string   const& mesh_name)
 {
     return generateRegularTriMesh(BaseLib::UniformSubdivision(n_x_cells*cell_size_x, n_x_cells),
@@ -377,7 +377,7 @@ Mesh* MeshGenerator::generateRegularTriMesh(
 Mesh* MeshGenerator::generateRegularTriMesh(
     const BaseLib::ISubdivision &div_x,
     const BaseLib::ISubdivision &div_y,
-    GeoLib::Point const& origin,
+    MathLib::Point3d const& origin,
     std::string const& mesh_name)
 {
     std::vector<double> vec_x(div_x());
@@ -420,7 +420,7 @@ Mesh* MeshGenerator::generateRegularPrismMesh(
     const std::size_t x_subdivision,
     const std::size_t y_subdivision,
     const std::size_t z_subdivision,
-    const GeoLib::Point& origin,
+    const MathLib::Point3d& origin,
     std::string const& mesh_name)
 {
     return generateRegularPrismMesh(x_subdivision, y_subdivision, z_subdivision,
@@ -433,7 +433,7 @@ Mesh* MeshGenerator::generateRegularPrismMesh(
     const unsigned n_y_cells,
     const unsigned n_z_cells,
     const double cell_size,
-    GeoLib::Point const& origin,
+    MathLib::Point3d const& origin,
     std::string const& mesh_name)
 {
     return generateRegularPrismMesh(n_x_cells, n_y_cells, n_z_cells,
@@ -447,7 +447,7 @@ Mesh* MeshGenerator::generateRegularPrismMesh(
     const double   cell_size_x,
     const double   cell_size_y,
     const double   cell_size_z,
-    GeoLib::Point const& origin,
+    MathLib::Point3d const& origin,
     std::string   const& mesh_name)
 {
     std::unique_ptr<MeshLib::Mesh> mesh (
diff --git a/MeshLib/MeshGenerators/MeshGenerator.h b/MeshLib/MeshGenerators/MeshGenerator.h
index 8dca5bda95cb55571b305e6f32a9ab934deb9f38..ef14651aee35059f818518110d4caac7d529583b 100644
--- a/MeshLib/MeshGenerators/MeshGenerator.h
+++ b/MeshLib/MeshGenerators/MeshGenerator.h
@@ -16,7 +16,7 @@
 #include <vector>
 
 #include "BaseLib/Subdivision.h"
-#include "GeoLib/Point.h"
+#include "MathLib/Point3d.h"
 #include "MeshLib/Mesh.h"
 
 namespace MeshLib
@@ -34,7 +34,7 @@ namespace MeshGenerator
  */
 std::vector<MeshLib::Node*> generateRegularNodes(
     const std::vector<const std::vector<double>*> &vec_xyz_coords,
-    const GeoLib::Point& origin = GeoLib::ORIGIN);
+    const MathLib::Point3d& origin = MathLib::ORIGIN);
 
 /**
  * Generate regularly placed mesh nodes in 1D space
@@ -44,7 +44,7 @@ std::vector<MeshLib::Node*> generateRegularNodes(
  */
 std::vector<MeshLib::Node*> generateRegularNodes(
     const std::vector<double> &vec_x_coords,
-    const GeoLib::Point& origin = GeoLib::ORIGIN);
+    const MathLib::Point3d& origin = MathLib::ORIGIN);
 
 /**
  * Generate regularly placed mesh nodes in 1D space
@@ -56,7 +56,7 @@ std::vector<MeshLib::Node*> generateRegularNodes(
 std::vector<MeshLib::Node*> generateRegularNodes(
     std::vector<double> &vec_x_coords,
     std::vector<double> &vec_y_coords,
-    const GeoLib::Point& origin = GeoLib::ORIGIN);
+    const MathLib::Point3d& origin = MathLib::ORIGIN);
 
 /**
  * Generate regularly placed mesh nodes in 1D space
@@ -70,7 +70,7 @@ std::vector<MeshLib::Node*> generateRegularNodes(
     std::vector<double> &vec_x_coords,
     std::vector<double> &vec_y_coords,
     std::vector<double> &vec_z_coords,
-    const GeoLib::Point& origin = GeoLib::ORIGIN);
+    const MathLib::Point3d& origin = MathLib::ORIGIN);
 
 /**
  * Generate regularly placed mesh nodes in 3D spaces
@@ -81,17 +81,17 @@ std::vector<MeshLib::Node*> generateRegularNodes(
  */
 std::vector<MeshLib::Node*> generateRegularNodes(const std::array<unsigned,3> &n_cells,
                                                  const std::array<double,3> &cell_size,
-                                                 const GeoLib::Point& origin);
+                                                 const MathLib::Point3d& origin);
 
 /**
  * Generate an 1D Line-Element mesh. The mesh is generated in x-direction.
  *
  * \param div Subdivision operator
- * \param origin Optional mesh's origin (the left-most point) with GeoLib::ORIGIN default.
+ * \param origin Optional mesh's origin (the left-most point) with MathLib::ORIGIN default.
  * \param mesh_name Name of the new mesh.
  */
 Mesh* generateLineMesh(const BaseLib::ISubdivision &div,
-                       GeoLib::Point const& origin = GeoLib::ORIGIN,
+                       MathLib::Point3d const& origin = MathLib::ORIGIN,
                        std::string const& mesh_name = "mesh");
 
 /**
@@ -99,12 +99,12 @@ Mesh* generateLineMesh(const BaseLib::ISubdivision &div,
  *
  * \param length Mesh's length in x-direction.
  * \param subdivision Number of subdivisions.
- * \param origin Optional mesh's origin (the left-most point) with GeoLib::ORIGIN default.
+ * \param origin Optional mesh's origin (the left-most point) with MathLib::ORIGIN default.
  * \param mesh_name Name of the new mesh.
  */
 Mesh* generateLineMesh(const double length,
                        const std::size_t subdivision,
-                       GeoLib::Point const& origin = GeoLib::ORIGIN,
+                       MathLib::Point3d const& origin = MathLib::ORIGIN,
                        std::string   const& mesh_name = "mesh");
 
 /**
@@ -112,12 +112,12 @@ Mesh* generateLineMesh(const double length,
  *
  * \param n_cells Number of cells.
  * \param cell_size Length of Line elements
- * \param origin Optional mesh's origin (the left-most point) with GeoLib::ORIGIN default.
+ * \param origin Optional mesh's origin (the left-most point) with MathLib::ORIGIN default.
  * \param mesh_name Name of the new mesh.
  */
 Mesh* generateLineMesh(const unsigned n_cells,
                        const double   cell_size,
-                       GeoLib::Point const& origin = GeoLib::ORIGIN,
+                       MathLib::Point3d const& origin = MathLib::ORIGIN,
                        std::string   const& mesh_name = "mesh");
 
 /**
@@ -126,12 +126,12 @@ Mesh* generateLineMesh(const unsigned n_cells,
  *
  * \param div_x Subdivision operator in x direction
  * \param div_y Subdivision operator in y direction
- * \param origin Optional mesh's origin (the left-most point) with GeoLib::ORIGIN default.
+ * \param origin Optional mesh's origin (the left-most point) with MathLib::ORIGIN default.
  * \param mesh_name Name of the new mesh.
  */
 Mesh* generateRegularQuadMesh(const BaseLib::ISubdivision &div_x,
                               const BaseLib::ISubdivision &div_y,
-                              GeoLib::Point const& origin = GeoLib::ORIGIN,
+                              MathLib::Point3d const& origin = MathLib::ORIGIN,
                               std::string const& mesh_name = "mesh");
 
 /**
@@ -140,11 +140,11 @@ Mesh* generateRegularQuadMesh(const BaseLib::ISubdivision &div_x,
  *
  * \param length Mesh's dimensions in x- and y-directions.
  * \param subdivision Number of subdivisions.
- * \param origin Optional mesh's origin (the lower left corner) with GeoLib::ORIGIN default.
+ * \param origin Optional mesh's origin (the lower left corner) with MathLib::ORIGIN default.
  */
 Mesh* generateRegularQuadMesh(const double length,
                               const std::size_t subdivision,
-                              GeoLib::Point const& origin = GeoLib::ORIGIN,
+                              MathLib::Point3d const& origin = MathLib::ORIGIN,
                               std::string   const& mesh_name = "mesh");
 
 /**
@@ -155,13 +155,13 @@ Mesh* generateRegularQuadMesh(const double length,
  * \param y_length Mesh's dimension in y-direction.
  * \param x_subdivision Number of subdivisions in x-direction.
  * \param y_subdivision Number of subdivisions in y-direction.
- * \param origin Optional mesh's origin (the lower left corner) with GeoLib::ORIGIN default.
+ * \param origin Optional mesh's origin (the lower left corner) with MathLib::ORIGIN default.
  */
 Mesh* generateRegularQuadMesh(const double x_length,
                               const double y_length,
                               const std::size_t x_subdivision,
                               const std::size_t y_subdivision,
-                              GeoLib::Point const& origin = GeoLib::ORIGIN,
+                              MathLib::Point3d const& origin = MathLib::ORIGIN,
                               std::string   const& mesh_name = "mesh");
 
 /**
@@ -171,13 +171,13 @@ Mesh* generateRegularQuadMesh(const double x_length,
  * \param n_x_cells Number of cells in x-direction.
  * \param n_y_cells Number of cells in y-direction.
  * \param cell_size Edge length of Quad elements
- * \param origin Optional mesh's origin (the lower left corner) with GeoLib::ORIGIN default.
+ * \param origin Optional mesh's origin (the lower left corner) with MathLib::ORIGIN default.
  * \param mesh_name Name of the new mesh.
  */
 Mesh* generateRegularQuadMesh(const unsigned n_x_cells,
                               const unsigned n_y_cells,
                               const double   cell_size,
-                              GeoLib::Point const& origin = GeoLib::ORIGIN,
+                              MathLib::Point3d const& origin = MathLib::ORIGIN,
                               std::string   const& mesh_name = "mesh");
 
 /**
@@ -188,14 +188,14 @@ Mesh* generateRegularQuadMesh(const unsigned n_x_cells,
  * \param n_y_cells Number of cells in y-direction.
  * \param cell_size_x Edge length of Quad elements in x-direction
  * \param cell_size_y Edge length of Quad elements in y-direction
- * \param origin Optional mesh's origin (the lower left corner) with GeoLib::ORIGIN default.
+ * \param origin Optional mesh's origin (the lower left corner) with MathLib::ORIGIN default.
  * \param mesh_name Name of the new mesh.
  */
 Mesh* generateRegularQuadMesh(const unsigned n_x_cells,
                               const unsigned n_y_cells,
                               const double   cell_size_x,
                               const double   cell_size_y,
-                              GeoLib::Point const& origin = GeoLib::ORIGIN,
+                              MathLib::Point3d const& origin = MathLib::ORIGIN,
                               std::string   const& mesh_name = "mesh");
 
 
@@ -206,12 +206,12 @@ Mesh* generateRegularQuadMesh(const unsigned n_x_cells,
  * \param div_x Subdivision operator in x direction
  * \param div_y Subdivision operator in y direction
  * \param div_z Subdivision operator in z direction
- * \param origin Optional mesh's origin (the bottom lower left corner) with GeoLib::ORIGIN default.
+ * \param origin Optional mesh's origin (the bottom lower left corner) with MathLib::ORIGIN default.
  */
 Mesh* generateRegularHexMesh(const BaseLib::ISubdivision &div_x,
                              const BaseLib::ISubdivision &div_y,
                              const BaseLib::ISubdivision &div_z,
-                             GeoLib::Point const& origin = GeoLib::ORIGIN,
+                             MathLib::Point3d const& origin = MathLib::ORIGIN,
                              std::string const& mesh_name = "mesh");
 
 /**
@@ -219,12 +219,12 @@ Mesh* generateRegularHexMesh(const BaseLib::ISubdivision &div_x,
  *
  * \param length      Mesh dimensions in x- and y- and z-directions.
  * \param subdivision Number of subdivisions.
- * \param origin      Optional mesh's origin (the bottom lower left corner) with GeoLib::ORIGIN default.
+ * \param origin      Optional mesh's origin (the bottom lower left corner) with MathLib::ORIGIN default.
  * \param mesh_name   Name of the new mesh.
  */
 Mesh* generateRegularHexMesh(const double length,
                              const std::size_t subdivision,
-                             GeoLib::Point const& origin = GeoLib::ORIGIN,
+                             MathLib::Point3d const& origin = MathLib::ORIGIN,
                              std::string   const& mesh_name = "mesh");
 
 /**
@@ -236,7 +236,7 @@ Mesh* generateRegularHexMesh(const double length,
  * \param x_subdivision Number of subdivisions in x-direction.
  * \param y_subdivision Number of subdivisions in y-direction.
  * \param z_subdivision Number of subdivisions in z-direction.
- * \param origin        Optional mesh's origin (the bottom lower left corner) with GeoLib::ORIGIN default.
+ * \param origin        Optional mesh's origin (the bottom lower left corner) with MathLib::ORIGIN default.
  * \param mesh_name     Name of the new mesh.
   */
 Mesh* generateRegularHexMesh(const double x_length,
@@ -245,7 +245,7 @@ Mesh* generateRegularHexMesh(const double x_length,
                              const std::size_t x_subdivision,
                              const std::size_t y_subdivision,
                              const std::size_t z_subdivision,
-                             GeoLib::Point const& origin = GeoLib::ORIGIN,
+                             MathLib::Point3d const& origin = MathLib::ORIGIN,
                              std::string   const& mesh_name = "mesh");
 
 /**
@@ -255,14 +255,14 @@ Mesh* generateRegularHexMesh(const double x_length,
  * \param n_y_cells Number of cells in y-direction.
  * \param n_z_cells Number of cells in z-direction.
  * \param cell_size Edge length of Hex elements
- * \param origin    Optional mesh's origin (the lower left corner) with GeoLib::ORIGIN default.
+ * \param origin    Optional mesh's origin (the lower left corner) with MathLib::ORIGIN default.
  * \param mesh_name Name of the new mesh.
  */
 Mesh* generateRegularHexMesh(const unsigned n_x_cells,
                              const unsigned n_y_cells,
                              const unsigned n_z_cells,
                              const double   cell_size,
-                             GeoLib::Point const& origin = GeoLib::ORIGIN,
+                             MathLib::Point3d const& origin = MathLib::ORIGIN,
                              std::string   const& mesh_name = "mesh");
 
 /**
@@ -274,7 +274,7 @@ Mesh* generateRegularHexMesh(const unsigned n_x_cells,
  * \param cell_size_x  Edge length of Hex elements in x-direction.
  * \param cell_size_y  Edge length of Hex elements in y s-direction.
  * \param cell_size_z  Edge length of Hex elements in z-direction
- * \param origin       Optional mesh's origin (the lower left corner) with GeoLib::ORIGIN default.
+ * \param origin       Optional mesh's origin (the lower left corner) with MathLib::ORIGIN default.
  * \param mesh_name    Name of the new mesh.
  */
 Mesh* generateRegularHexMesh(const unsigned n_x_cells,
@@ -283,7 +283,7 @@ Mesh* generateRegularHexMesh(const unsigned n_x_cells,
                              const double   cell_size_x,
                              const double   cell_size_y,
                              const double   cell_size_z,
-                             GeoLib::Point const& origin = GeoLib::ORIGIN,
+                             MathLib::Point3d const& origin = MathLib::ORIGIN,
                              std::string   const& mesh_name = "mesh");
 
 /**
@@ -292,11 +292,11 @@ Mesh* generateRegularHexMesh(const unsigned n_x_cells,
  *
  * \param div_x Subdivision operator in x direction
  * \param div_y Subdivision operator in y direction
- * \param origin Optional mesh's origin (the bottom lower left corner) with GeoLib::ORIGIN default.
+ * \param origin Optional mesh's origin (the bottom lower left corner) with MathLib::ORIGIN default.
  */
 Mesh* generateRegularTriMesh(const BaseLib::ISubdivision &div_x,
                              const BaseLib::ISubdivision &div_y,
-                             GeoLib::Point const& origin = GeoLib::ORIGIN,
+                             MathLib::Point3d const& origin = MathLib::ORIGIN,
                              std::string const& mesh_name = "mesh");
 
 /**
@@ -305,11 +305,11 @@ Mesh* generateRegularTriMesh(const BaseLib::ISubdivision &div_x,
  *
  * \param length Mesh's dimensions in x- and y-directions.
  * \param subdivision Number of subdivisions.
- * \param origin Optional mesh's origin (the lower left corner) with GeoLib::ORIGIN default.
+ * \param origin Optional mesh's origin (the lower left corner) with MathLib::ORIGIN default.
  */
 Mesh* generateRegularTriMesh(const double length,
                               const std::size_t subdivision,
-                              GeoLib::Point const& origin = GeoLib::ORIGIN,
+                              MathLib::Point3d const& origin = MathLib::ORIGIN,
                               std::string   const& mesh_name = "mesh");
 
 /**
@@ -320,13 +320,13 @@ Mesh* generateRegularTriMesh(const double length,
  * \param y_length Mesh's dimension in y-direction.
  * \param x_subdivision Number of subdivisions in x-direction.
  * \param y_subdivision Number of subdivisions in y-direction.
- * \param origin Optional mesh's origin (the lower left corner) with GeoLib::ORIGIN default.
+ * \param origin Optional mesh's origin (the lower left corner) with MathLib::ORIGIN default.
  */
 Mesh* generateRegularTriMesh(const double x_length,
                              const double y_length,
                              const std::size_t x_subdivision,
                              const std::size_t y_subdivision,
-                             GeoLib::Point const& origin = GeoLib::ORIGIN,
+                             MathLib::Point3d const& origin = MathLib::ORIGIN,
                              std::string   const& mesh_name = "mesh");
 
 /**
@@ -336,13 +336,13 @@ Mesh* generateRegularTriMesh(const double x_length,
  * \param n_x_cells Number of cells in x-direction.
  * \param n_y_cells Number of cells in y-direction.
  * \param cell_size Edge length of two equal sides of isosceles triangles
- * \param origin Optional mesh's origin (the lower left corner) with GeoLib::ORIGIN default.
+ * \param origin Optional mesh's origin (the lower left corner) with MathLib::ORIGIN default.
  * \param mesh_name Name of the new mesh.
  */
 Mesh* generateRegularTriMesh(const unsigned n_x_cells,
                              const unsigned n_y_cells,
                              const double   cell_size,
-                             GeoLib::Point const& origin = GeoLib::ORIGIN,
+                             MathLib::Point3d const& origin = MathLib::ORIGIN,
                              std::string   const& mesh_name = "mesh");
 
 /**
@@ -353,14 +353,14 @@ Mesh* generateRegularTriMesh(const unsigned n_x_cells,
  * \param n_y_cells    Number of cells in y-direction.
  * \param cell_size_x  Edge length of triangles in x-direction.
  * \param cell_size_y  Edge length of triangles in y-direction.
- * \param origin Optional mesh's origin (the lower left corner) with GeoLib::ORIGIN default.
+ * \param origin Optional mesh's origin (the lower left corner) with MathLib::ORIGIN default.
  * \param mesh_name Name of the new mesh.
  */
 Mesh* generateRegularTriMesh(const unsigned n_x_cells,
                              const unsigned n_y_cells,
                              const double   cell_size_x,
                              const double   cell_size_y,
-                             GeoLib::Point const& origin = GeoLib::ORIGIN,
+                             MathLib::Point3d const& origin = MathLib::ORIGIN,
                              std::string   const& mesh_name = "mesh");
 
 /**
@@ -372,7 +372,7 @@ Mesh* generateRegularTriMesh(const unsigned n_x_cells,
  * \param x_subdivision Number of subdivisions in x-direction.
  * \param y_subdivision Number of subdivisions in y-direction.
  * \param z_subdivision Number of subdivisions in z-direction.
- * \param origin Optional mesh's origin (the lower left corner) with GeoLib::ORIGIN default.
+ * \param origin Optional mesh's origin (the lower left corner) with MathLib::ORIGIN default.
  */
 Mesh* generateRegularPrismMesh(const double x_length,
                                const double y_length,
@@ -380,7 +380,7 @@ Mesh* generateRegularPrismMesh(const double x_length,
                                const std::size_t x_subdivision,
                                const std::size_t y_subdivision,
                                const std::size_t z_subdivision,
-                               GeoLib::Point const& origin = GeoLib::ORIGIN,
+                               MathLib::Point3d const& origin = MathLib::ORIGIN,
                                std::string   const& mesh_name = "mesh");
 
 /**
@@ -390,14 +390,14 @@ Mesh* generateRegularPrismMesh(const double x_length,
  * \param n_y_cells Number of cells in y-direction.
  * \param n_z_cells Number of cells in z-direction.
  * \param cell_size Edge length of two equal sides of isosceles triangles + height of prism
- * \param origin Optional mesh's origin (the lower left corner) with GeoLib::ORIGIN default.
+ * \param origin Optional mesh's origin (the lower left corner) with MathLib::ORIGIN default.
  * \param mesh_name Name of the new mesh.
  */
 Mesh* generateRegularPrismMesh(const unsigned n_x_cells,
                                const unsigned n_y_cells,
                                const unsigned n_z_cells,
                                const double cell_size,
-                               GeoLib::Point const& origin = GeoLib::ORIGIN,
+                               MathLib::Point3d const& origin = MathLib::ORIGIN,
                                std::string   const& mesh_name = "mesh");
 
 /**
@@ -409,7 +409,7 @@ Mesh* generateRegularPrismMesh(const unsigned n_x_cells,
  * \param cell_size_x  Edge length of triangles in x-direction.
  * \param cell_size_y  Edge length of triangles in y-direction.
  * \param cell_size_z  Edge length of triangles in z-direction.
- * \param origin Optional mesh's origin (the lower left corner) with GeoLib::ORIGIN default.
+ * \param origin Optional mesh's origin (the lower left corner) with MathLib::ORIGIN default.
  * \param mesh_name Name of the new mesh.
  */
 Mesh* generateRegularPrismMesh(const unsigned n_x_cells,
@@ -418,7 +418,7 @@ Mesh* generateRegularPrismMesh(const unsigned n_x_cells,
                                const double   cell_size_x,
                                const double   cell_size_y,
                                const double   cell_size_z,
-                               GeoLib::Point const& origin = GeoLib::ORIGIN,
+                               MathLib::Point3d const& origin = MathLib::ORIGIN,
                                std::string   const& mesh_name = "mesh");
 
 /// Constructs a surface mesh approximating a surface in the 3d space given by
diff --git a/MeshLib/MeshQuality/ElementQualityMetric.cpp b/MeshLib/MeshQuality/ElementQualityMetric.cpp
index a8936a6694ee647b6bf17e8a441e5d9c9129538f..5c6378e482afdd5071fb69bf3c79cc3e80ba17da 100644
--- a/MeshLib/MeshQuality/ElementQualityMetric.cpp
+++ b/MeshLib/MeshQuality/ElementQualityMetric.cpp
@@ -16,7 +16,6 @@
 
 #include <cmath>
 
-#include "GeoLib/Point.h"
 #include "MeshLib/Node.h"
 
 namespace MeshLib
diff --git a/Tests/MeshLib/TestMeshValidation.cpp b/Tests/MeshLib/TestMeshValidation.cpp
index ce94da6e95be40ea92348779176ae233ad567308..c8de91902f1143e244ea7df892b2d87ce009a2e8 100644
--- a/Tests/MeshLib/TestMeshValidation.cpp
+++ b/Tests/MeshLib/TestMeshValidation.cpp
@@ -15,6 +15,8 @@
 
 #include <memory>
 
+#include "MathLib/Point3d.h"
+
 #include "MeshLib/Mesh.h"
 #include "MeshLib/Node.h"
 #include "MeshLib/MeshQuality/MeshValidation.h"
@@ -60,7 +62,7 @@ TEST(MeshValidation, DetectHolesHex)
 {
     auto mesh = std::unique_ptr<MeshLib::Mesh>{
         MeshLib::MeshGenerator::generateRegularHexMesh(
-            5,4,4,1.0,1.0,1.0,GeoLib::ORIGIN, "mesh")};
+            5, 4, 4, 1.0, 1.0, 1.0, MathLib::ORIGIN, "mesh")};
     ASSERT_EQ(0, MeshLib::MeshValidation::detectHoles(*mesh));
 
     detectHoles(*mesh, {27}, 1);
diff --git a/Tests/NumLib/TestExtrapolation.cpp b/Tests/NumLib/TestExtrapolation.cpp
index 341debb750b564c6dfe9842a0270158b7aa3ea2d..9e509a690683388cc601bf3ca1e8a274897bdee0 100644
--- a/Tests/NumLib/TestExtrapolation.cpp
+++ b/Tests/NumLib/TestExtrapolation.cpp
@@ -52,7 +52,6 @@ void fillVectorRandomly(Vector& x)
     std::random_device rd;
     std::mt19937 random_number_generator(rd());
     std::uniform_real_distribution<double> rnd;
-    std::vector<GeoLib::Point> pnts;
 
     using Index = typename MathLib::MatrixVectorTraits<Vector>::Index;
     Index const size = x.size();