diff --git a/Applications/DataExplorer/DataView/LinearEditDialog.cpp b/Applications/DataExplorer/DataView/LinearEditDialog.cpp
index c470662332e32b6c349b21674b9be68f3cdaf66e..3942911ddc1bd3f3156c327ee2eefb81b46fcf5c 100644
--- a/Applications/DataExplorer/DataView/LinearEditDialog.cpp
+++ b/Applications/DataExplorer/DataView/LinearEditDialog.cpp
@@ -58,7 +58,7 @@ void LinearEditDialog::on_comboBox_currentIndexChanged(int index)
         for (std::size_t i = 0; i < nRows; i++)
         {
             tableWidget->item(i, 0)->setText(
-                QString::number(_line.getPoint(i)->getCoords()[2]));
+                QString::number((*_line.getPoint(i))[2]));
         }
     }
 }
diff --git a/Applications/DataExplorer/VtkVis/VtkPointsSource.cpp b/Applications/DataExplorer/VtkVis/VtkPointsSource.cpp
index 6817df014aacd96d194d1467fde08009e145afc5..31cf962f74374b1cbbb24263b79c1bdd6e92aaa1 100644
--- a/Applications/DataExplorer/VtkVis/VtkPointsSource.cpp
+++ b/Applications/DataExplorer/VtkVis/VtkPointsSource.cpp
@@ -55,9 +55,8 @@ void VtkPointsSource::PrintSelf(ostream& os, vtkIndent indent)
     int i = 0;
     for (auto point : *_points)
     {
-        const double* coords = point->getCoords();
-        os << indent << "Point " << i << " (" << coords[0] << ", " << coords[1]
-           << ", " << coords[2] << ")\n";
+        os << indent << "Point " << i << " (" << (*point)[0] << ", "
+           << (*point)[1] << ", " << (*point)[2] << ")\n";
         i++;
     }
 }
diff --git a/Applications/DataExplorer/VtkVis/VtkPolylinesSource.cpp b/Applications/DataExplorer/VtkVis/VtkPolylinesSource.cpp
index 56b226e8799e33a181dc77c2c79291b9700cfe2f..c684f7c34c1e8e8b9a0fb1dc48f17adbf2fbfd4b 100644
--- a/Applications/DataExplorer/VtkVis/VtkPolylinesSource.cpp
+++ b/Applications/DataExplorer/VtkVis/VtkPolylinesSource.cpp
@@ -60,10 +60,9 @@ void VtkPolylinesSource::PrintSelf(ostream& os, vtkIndent indent)
         int numPoints = polyline->getNumberOfPoints();
         for (int i = 0; i < numPoints; i++)
         {
-            const GeoLib::Point* point = polyline->getPoint(i);
-            const double* coords = point->getCoords();
-            os << indent << "Point " << i << " (" << coords[0] << ", "
-               << coords[1] << ", " << coords[2] << ")\n";
+            const GeoLib::Point& point = *polyline->getPoint(i);
+            os << indent << "Point " << i << " (" << point[0] << ", "
+               << point[1] << ", " << point[2] << ")\n";
         }
     }
 }
diff --git a/Applications/DataExplorer/VtkVis/VtkStationSource.cpp b/Applications/DataExplorer/VtkVis/VtkStationSource.cpp
index 639b0ee861ac630a2d90217aa51c264375cbb39b..0e44ba4933a41a77e067e4a9fce25a0d9b90ae00 100644
--- a/Applications/DataExplorer/VtkVis/VtkStationSource.cpp
+++ b/Applications/DataExplorer/VtkVis/VtkStationSource.cpp
@@ -58,9 +58,8 @@ void VtkStationSource::PrintSelf(ostream& os, vtkIndent indent)
     int i = 0;
     for (auto station : *_stations)
     {
-        const double* coords = station->getCoords();
-        os << indent << "Station " << i << " (" << coords[0] << ", "
-           << coords[1] << ", " << coords[2] << ")\n";
+        os << indent << "Station " << i << " (" << (*station)[0] << ", "
+           << (*station)[1] << ", " << (*station)[2] << ")\n";
         i++;
     }
 }
diff --git a/Applications/FileIO/Gmsh/GMSHPolygonTree.cpp b/Applications/FileIO/Gmsh/GMSHPolygonTree.cpp
index 765c8c63484a672aeb7111b4046ab2b803f3d2d2..ac052d20c2a7ad6af0aa259697772c448d0065ef 100644
--- a/Applications/FileIO/Gmsh/GMSHPolygonTree.cpp
+++ b/Applications/FileIO/Gmsh/GMSHPolygonTree.cpp
@@ -501,7 +501,7 @@ void GMSHPolygonTree::writeAdditionalPointData(std::size_t& pnt_id_offset,
 }
 
 void GMSHPolygonTree::getPointsFromSubPolygons(
-    std::vector<GeoLib::Point const*>& pnts)
+    std::vector<GeoLib::Point const*>& pnts) const
 {
     for (std::list<SimplePolygonTree*>::const_iterator it(_children.begin());
          it != _children.end(); ++it)
@@ -511,7 +511,7 @@ void GMSHPolygonTree::getPointsFromSubPolygons(
 }
 
 void GMSHPolygonTree::getStationsInsideSubPolygons(
-    std::vector<GeoLib::Point const*>& stations)
+    std::vector<GeoLib::Point const*>& stations) const
 {
     const std::size_t n_stations(_stations.size());
     for (std::size_t k(0); k < n_stations; k++)
diff --git a/Applications/FileIO/Gmsh/GMSHPolygonTree.h b/Applications/FileIO/Gmsh/GMSHPolygonTree.h
index bcd17132b2267b62f4adc216d137f7dca40e3115..3f16aff8c305f4e169d1d5be7931481c8052c9a1 100644
--- a/Applications/FileIO/Gmsh/GMSHPolygonTree.h
+++ b/Applications/FileIO/Gmsh/GMSHPolygonTree.h
@@ -88,8 +88,10 @@ public:
     void writeAdditionalPointData(std::size_t & pnt_id_offset, std::size_t sfc_number, std::ostream& out) const;
 
 private:
-    void getPointsFromSubPolygons(std::vector<GeoLib::Point const*>& pnts);
-    void getStationsInsideSubPolygons(std::vector<GeoLib::Point const*>& stations);
+    void getPointsFromSubPolygons(
+        std::vector<GeoLib::Point const*>& pnts) const;
+    void getStationsInsideSubPolygons(
+        std::vector<GeoLib::Point const*>& stations) const;
     void checkIntersectionsSegmentExistingPolylines(
         GeoLib::PolylineWithSegmentMarker* ply,
         GeoLib::Polyline::SegmentIterator const& seg_it);
diff --git a/Applications/FileIO/Legacy/OGSIOVer4.cpp b/Applications/FileIO/Legacy/OGSIOVer4.cpp
index f23fa6baa8aabef56d025151a2d8107af6e37994..b8dc94ba004634d4a46ba19ab5094a42272030e2 100644
--- a/Applications/FileIO/Legacy/OGSIOVer4.cpp
+++ b/Applications/FileIO/Legacy/OGSIOVer4.cpp
@@ -29,7 +29,6 @@
 #include "GeoLib/PointVec.h"
 #include "GeoLib/Polygon.h"
 #include "GeoLib/Polyline.h"
-#include "GeoLib/SimplePolygonTree.h"
 #include "GeoLib/Surface.h"
 #include "GeoLib/Triangle.h"
 
diff --git a/Applications/Utils/MeshGeoTools/VerticalSliceFromLayers.cpp b/Applications/Utils/MeshGeoTools/VerticalSliceFromLayers.cpp
index 42f91b768881c1c2a47958d81c31784bb9f33634..926025b0246bb0dc27a46e8d1c3ef93b58b9a00f 100644
--- a/Applications/Utils/MeshGeoTools/VerticalSliceFromLayers.cpp
+++ b/Applications/Utils/MeshGeoTools/VerticalSliceFromLayers.cpp
@@ -228,7 +228,10 @@ MeshLib::Mesh* generateMesh(GeoLib::GEOObjects& geo,
         geo, true, FileIO::GMSH::MeshDensityAlgorithm::FixedMeshDensity, res, 0,
         0, gmsh_geo, false, false);
     gmsh_io.writePhysicalGroups(true);
-    BaseLib::IO::writeStringToFile(gmsh_io.writeToString(), gmsh_geo_name);
+    if (!BaseLib::IO::writeStringToFile(gmsh_io.writeToString(), gmsh_geo_name))
+    {
+        ERR("Writing gmsh geo file '{:s}' failed.", gmsh_geo_name);
+    }
 
     std::string const gmsh_mesh_name = output_name + ".msh";
     std::string gmsh_command = "gmsh -2 -algo meshadapt " + gmsh_geo_name;
diff --git a/GeoLib/Polygon.cpp b/GeoLib/Polygon.cpp
index 07dba6090bb16f5ba1a0e9e83e15ffeac8f53559..36bb3dab438b33748c0d4c0b715c09fa435e3ea7 100644
--- a/GeoLib/Polygon.cpp
+++ b/GeoLib/Polygon.cpp
@@ -401,13 +401,8 @@ void Polygon::ensureCCWOrientation()
     }
 }
 
-#if __GNUC__ <= 4 && (__GNUC_MINOR__ < 9)
-void Polygon::splitPolygonAtIntersection(
-    const std::list<Polygon*>::iterator& polygon_it)
-#else
 void Polygon::splitPolygonAtIntersection(
     const std::list<Polygon*>::const_iterator& polygon_it)
-#endif
 {
     GeoLib::Polyline::SegmentIterator seg_it0((*polygon_it)->begin());
     GeoLib::Polyline::SegmentIterator seg_it1((*polygon_it)->begin());
diff --git a/GeoLib/Polygon.h b/GeoLib/Polygon.h
index 0d5cbca2bbb60a265d5c5ee11b96ab33e1369353..91a9d46b698ddfa4d73370263a371bc1bc2cc0c8 100644
--- a/GeoLib/Polygon.h
+++ b/GeoLib/Polygon.h
@@ -129,13 +129,9 @@ private:
 
     void ensureCCWOrientation ();
 
-#if __GNUC__ <= 4 && (__GNUC_MINOR__ < 9)
-    void splitPolygonAtIntersection(
-        const std::list<Polygon*>::iterator& polygon_it);
-#else
     void splitPolygonAtIntersection(
         const std::list<Polygon*>::const_iterator& polygon_it);
-#endif
+
     void splitPolygonAtPoint (const std::list<Polygon*>::iterator& polygon_it);
     std::list<Polygon*> _simple_polygon_list;
     AABB _aabb;
diff --git a/MaterialLib/MPL/VariableType.cpp b/MaterialLib/MPL/VariableType.cpp
index eff244be6a8e0f3cf7d0325ac8c4bab613fb9529..f853bb31e5d1c4fcd96f9c3edeb9d9df05fe4072 100644
--- a/MaterialLib/MPL/VariableType.cpp
+++ b/MaterialLib/MPL/VariableType.cpp
@@ -26,6 +26,10 @@ Variable convertStringToVariable(std::string const& input)
     {
         return Variable::phase_pressure;
     }
+    if (boost::iequals(input, "liquid_phase_pressure"))
+    {
+        return Variable::liquid_phase_pressure;
+    }
     if (boost::iequals(input, "capillary_pressure"))
     {
         return Variable::capillary_pressure;
diff --git a/ProcessLib/HeatTransportBHE/HeatTransportBHEProcess.cpp b/ProcessLib/HeatTransportBHE/HeatTransportBHEProcess.cpp
index 0f54e4aff5e9b0c071f2251d71b632d7bdcdbde8..7df77b4228adb9b7e9c97bf3ee852264fc98e3bf 100644
--- a/ProcessLib/HeatTransportBHE/HeatTransportBHEProcess.cpp
+++ b/ProcessLib/HeatTransportBHE/HeatTransportBHEProcess.cpp
@@ -313,8 +313,7 @@ void HeatTransportBHEProcess::createBHEBoundaryConditionTopBottom(
         // the boundary node order is according to the default node id order in
         // the model mesh.
         // for 1P-type BHE
-        if (bhe_boundary_nodes[0]->getCoords()[2] ==
-            bhe_boundary_nodes[1]->getCoords()[2])
+        if ((*bhe_boundary_nodes[0])[2] == (*bhe_boundary_nodes[1])[2])
         {
             INFO(
                 "For 1P-type BHE, the BHE inflow and outflow "
@@ -326,8 +325,7 @@ void HeatTransportBHEProcess::createBHEBoundaryConditionTopBottom(
         {
             // swap the boundary nodes if the z coordinate of the
             // first node is lower than it on the second node
-            if (bhe_boundary_nodes[0]->getCoords()[2] <
-                bhe_boundary_nodes[1]->getCoords()[2])
+            if ((*bhe_boundary_nodes[0])[2] < (*bhe_boundary_nodes[1])[2])
             {
                 std::swap(bhe_boundary_nodes[0], bhe_boundary_nodes[1]);
             }
diff --git a/Tests/xdmfdiff/xdmfdiff.cpp b/Tests/xdmfdiff/xdmfdiff.cpp
index 8ec8e445dd87fd061ccd2f4a947ebcb9aa1905b4..635c3104c6d4a6ce6c675f8724287fef5f3d7f94 100644
--- a/Tests/xdmfdiff/xdmfdiff.cpp
+++ b/Tests/xdmfdiff/xdmfdiff.cpp
@@ -13,7 +13,6 @@
 #include <XdmfGridCollection.hpp>
 #include <XdmfReader.hpp>
 #include <XdmfUnstructuredGrid.hpp>
-#include <boost/iterator/zip_iterator.hpp>
 #include <boost/range.hpp>
 #include <cmath>
 #include <cstdlib>
@@ -25,17 +24,6 @@
 #include <tuple>
 
 #include "InfoLib/GitInfo.h"
-// See https://stackoverflow.com/a/8513803/2706707
-template <typename... Containers>
-auto zip(Containers&&... containers) -> boost::iterator_range<
-    boost::zip_iterator<decltype(boost::make_tuple(std::begin(containers)...))>>
-{
-    auto zip_begin =
-        boost::make_zip_iterator(boost::make_tuple(std::begin(containers)...));
-    auto zip_end =
-        boost::make_zip_iterator(boost::make_tuple(std::end(containers)...));
-    return boost::make_iterator_range(zip_begin, zip_end);
-}
 
 struct Args
 {