diff --git a/GeoLib/AnalyticalGeometry.cpp b/GeoLib/AnalyticalGeometry.cpp
index 158f5e697b10d57636cb01a6685e68e0b3ebb165..0e1e49461273a8ec0b5214c4b6d155c78b01ab97 100644
--- a/GeoLib/AnalyticalGeometry.cpp
+++ b/GeoLib/AnalyticalGeometry.cpp
@@ -16,23 +16,14 @@
 
 #include <algorithm>
 #include <cmath>
-#include <cstdlib> // for exit
-#include <fstream>
 #include <limits>
-#include <list>
 
-#include "logog/include/logog.hpp"
+#include <logog/include/logog.hpp>
 
-// BaseLib
-#include "quicksort.h"
-
-// GeoLib
 #include "Polyline.h"
-#include "Triangle.h"
+#include "PointVec.h"
 
-// MathLib
-#include "LinAlg/Solvers/GaussAlgorithm.h"
-#include "MathTools.h"
+#include "MathLib/LinAlg/Solvers/GaussAlgorithm.h"
 
 namespace GeoLib
 {
diff --git a/GeoLib/AnalyticalGeometry.h b/GeoLib/AnalyticalGeometry.h
index 8928e6cfb103ec8c6b9ee737edccc942b1906574..f8a80df8502e76fe7c620fd3dd7fbbdf87e5e741 100644
--- a/GeoLib/AnalyticalGeometry.h
+++ b/GeoLib/AnalyticalGeometry.h
@@ -15,13 +15,16 @@
 #ifndef ANALYTICAL_GEOMETRY_H_
 #define ANALYTICAL_GEOMETRY_H_
 
-#include "MathLib/LinAlg/Dense/DenseMatrix.h"
 #include "MathLib/Vector3.h"
+#include "MathLib/LinAlg/Dense/DenseMatrix.h"
 
-#include "Triangle.h"
-#include "PointVec.h"
 #include "Polygon.h"
 
+namespace MathLib
+{
+    class PointVec;
+}
+
 namespace GeoLib
 {
 class Polyline;
diff --git a/GeoLib/CMakeLists.txt b/GeoLib/CMakeLists.txt
index 62182b216778e9fc2f623572cc0d1067c9cdcc1e..760b3d82c951b96e027295101cfd47ab915a2ce5 100644
--- a/GeoLib/CMakeLists.txt
+++ b/GeoLib/CMakeLists.txt
@@ -6,8 +6,6 @@ add_library(GeoLib STATIC ${SOURCES_GeoLib})
 
 include_directories(
 	.
-	${CMAKE_CURRENT_SOURCE_DIR}/../BaseLib
-	${CMAKE_CURRENT_SOURCE_DIR}/../MathLib
 )
 
 target_link_libraries(GeoLib
diff --git a/GeoLib/EarClippingTriangulation.cpp b/GeoLib/EarClippingTriangulation.cpp
index d46ccddfbaebda89067c4af1629e868b6b88b3c9..cbf899f560147c1bf5aaa05a35a50240b2bc0477 100644
--- a/GeoLib/EarClippingTriangulation.cpp
+++ b/GeoLib/EarClippingTriangulation.cpp
@@ -12,17 +12,13 @@
  *
  */
 
-// GeoLib
 #include "EarClippingTriangulation.h"
 
-// STL
-#include <vector>
+#include "BaseLib/uniqueInsert.h"
 
-// ThirdParty/logog
-#include "logog/include/logog.hpp"
-
-// BaseLib
-#include "uniqueInsert.h"
+#include "Polygon.h"
+#include "Triangle.h"
+#include "Point.h"
 
 namespace GeoLib
 {
diff --git a/GeoLib/EarClippingTriangulation.h b/GeoLib/EarClippingTriangulation.h
index a513af07ce5244fdb68fa319d3b7b52a1270ee9e..251d1da9c72893558c6eba5d6e512af0b4eb202b 100644
--- a/GeoLib/EarClippingTriangulation.h
+++ b/GeoLib/EarClippingTriangulation.h
@@ -15,18 +15,17 @@
 #ifndef EARCLIPPINGTRIANGULATION_H_
 #define EARCLIPPINGTRIANGULATION_H_
 
-// STL
 #include <list>
+#include <vector>
 
-// GeoLib
-#include "Polygon.h"
-#include "Triangle.h"
-
-// MathLib
 #include "AnalyticalGeometry.h"
 
 namespace GeoLib
 {
+
+class Polygon;
+class Triangle;
+
 class EarClippingTriangulation
 {
 public:
diff --git a/GeoLib/MinimalBoundingSphere.cpp b/GeoLib/MinimalBoundingSphere.cpp
index 881454f2a7168ee4c6e9e0418848430dc1e57feb..98165116fad5790090b1a9fa9d117ca770bfdf59 100644
--- a/GeoLib/MinimalBoundingSphere.cpp
+++ b/GeoLib/MinimalBoundingSphere.cpp
@@ -16,7 +16,9 @@
 
 #include <ctime>
 
-#include "MathTools.h"
+#include "MathLib/Point3d.h"
+#include "MathLib/Vector3.h"
+
 #include "AnalyticalGeometry.h"
 
 namespace GeoLib {
diff --git a/GeoLib/PointVec.cpp b/GeoLib/PointVec.cpp
index c66cd431e2fb1cf045ee10cecdc6d65590de22a5..3e18b712826907fea7cdf7cec6f534c743af08f8 100644
--- a/GeoLib/PointVec.cpp
+++ b/GeoLib/PointVec.cpp
@@ -14,17 +14,11 @@
 
 #include <numeric>
 
-// ThirdParty/logog
-#include "logog/include/logog.hpp"
+#include <logog/include/logog.hpp>
 
-// GeoLib
 #include "PointVec.h"
 
-// BaseLib
-#include "quicksort.h"
-
-// MathLib
-#include "MathTools.h"
+#include "MathLib/MathTools.h"
 
 namespace GeoLib
 {
diff --git a/GeoLib/Polygon.cpp b/GeoLib/Polygon.cpp
index 834f1ec3733999dd6b47d60823dcc4b8f58931ae..7c838dc8460e56fd57ae7fdf253695594c045b3d 100644
--- a/GeoLib/Polygon.cpp
+++ b/GeoLib/Polygon.cpp
@@ -12,23 +12,14 @@
  *
  */
 
-#include <cmath>
-#include <cstdlib> // for exit
-
-// ThirdParty/logog
-#include "logog/include/logog.hpp"
+#include "Polygon.h"
 
+#include <logog/include/logog.hpp>
 #include <boost/math/constants/constants.hpp>
 
-#include "Polygon.h"
+#include "BaseLib/quicksort.h"
 
-// MathLib
 #include "AnalyticalGeometry.h"
-#include "MathTools.h"
-#include "Vector3.h"
-
-// BaseLib
-#include "quicksort.h"
 
 namespace GeoLib
 {
diff --git a/GeoLib/Polygon.h b/GeoLib/Polygon.h
index cb10f98bebacf7948d2bbd064a9dfe122917cffe..82ad848594f86e0fd944ff92eacd18d0a62b0389 100644
--- a/GeoLib/Polygon.h
+++ b/GeoLib/Polygon.h
@@ -15,11 +15,11 @@
 #ifndef POLYGON_H_
 #define POLYGON_H_
 
-// STL
 #include <list>
+#include <vector>
 
-// GeoLib
 #include "AABB.h"
+#include "Point.h"
 #include "Polyline.h"
 
 namespace GeoLib
diff --git a/GeoLib/Polyline.cpp b/GeoLib/Polyline.cpp
index 2143fd59efd8b2e9f0e4a3584d0337c7909a10ce..1d69345f0729e39cdb6585a714ae73ff576ddb37 100644
--- a/GeoLib/Polyline.cpp
+++ b/GeoLib/Polyline.cpp
@@ -15,13 +15,9 @@
 // STL
 #include <algorithm>
 
-// ThirdParty/logog
-#include "logog/include/logog.hpp"
+#include <logog/include/logog.hpp>
 
-// GeoLib
 #include "Polyline.h"
-
-// MathLib
 #include "AnalyticalGeometry.h"
 
 namespace GeoLib
diff --git a/GeoLib/SensorData.cpp b/GeoLib/SensorData.cpp
index 47130763a7c04bb32510ba886ea88b3b1fa858ea..4b62c46f79c7643095db5ae0333ec33772bde242 100644
--- a/GeoLib/SensorData.cpp
+++ b/GeoLib/SensorData.cpp
@@ -12,17 +12,15 @@
  *
  */
 
+#include "SensorData.h"
+
 #include <cstdlib>
 #include <fstream>
 
-// ThirdParty/logog
-#include "logog/include/logog.hpp"
-
-#include "SensorData.h"
-
-#include "StringTools.h"
-#include "DateTools.h"
+#include <logog/include/logog.hpp>
 
+#include "BaseLib/StringTools.h"
+#include "BaseLib/DateTools.h"
 
 SensorData::SensorData(const std::string &file_name)
 : _start(0), _end(0), _step_size(0), _time_unit(TimeStepType::NONE)
diff --git a/GeoLib/Station.cpp b/GeoLib/Station.cpp
index e88c3229efa57b92539d530e9d7d62c5e413df62..47d4052bc4b7a806d36ba6aa51643cd19a71ea67 100644
--- a/GeoLib/Station.cpp
+++ b/GeoLib/Station.cpp
@@ -12,20 +12,13 @@
  *
  */
 
+#include "Station.h"
 
-#include <cmath>
 #include <cstdlib>
-#include <fstream>
-#include <iomanip>
 
-// ThirdParty/logog
-#include "logog/include/logog.hpp"
+#include <logog/include/logog.hpp>
 
-// BaseLib
-#include "DateTools.h"
-#include "StringTools.h"
-// GeoLib
-#include "Station.h"
+#include "BaseLib/StringTools.h"
 
 namespace GeoLib
 {
diff --git a/GeoLib/Station.h b/GeoLib/Station.h
index 0293b2d45ad4bf961cc800169684baa22e6fa0de..cdcebf0bf0ea2a3bf12f8f1b9701e630e55c2bb4 100644
--- a/GeoLib/Station.h
+++ b/GeoLib/Station.h
@@ -17,10 +17,8 @@
 #define GEO_STATION_H
 
 #include <string>
-#include <vector>
 
 #include "Point.h"
-#include "Polyline.h"
 #include "SensorData.h"
 
 namespace GeoLib
diff --git a/GeoLib/StationBorehole.cpp b/GeoLib/StationBorehole.cpp
index b2e8ff567457e9e8cef395ddc2d598e23aabc092..ab896a82fec5cf3b7201e67558da761f6be94cd4 100644
--- a/GeoLib/StationBorehole.cpp
+++ b/GeoLib/StationBorehole.cpp
@@ -12,20 +12,16 @@
  *
  */
 
+#include "StationBorehole.h"
 
 #include <cmath>
 #include <cstdlib>
 #include <fstream>
-#include <iomanip>
 
-// ThirdParty/logog
-#include "logog/include/logog.hpp"
+#include <logog/include/logog.hpp>
 
-// BaseLib
-#include "StringTools.h"
-#include "DateTools.h"
-// GeoLib
-#include "StationBorehole.h"
+#include "BaseLib/StringTools.h"
+#include "BaseLib/DateTools.h"
 
 namespace GeoLib
 {
diff --git a/GeoLib/StationBorehole.h b/GeoLib/StationBorehole.h
index 99b13ab9bd956f10b6d2543abaa8dd1e87c08d7c..0419cd50cc83192eab2831e0190b33abc9abaeba 100644
--- a/GeoLib/StationBorehole.h
+++ b/GeoLib/StationBorehole.h
@@ -19,6 +19,8 @@
 #include "Station.h"
 
 #include <list>
+#include <string>
+#include <vector>
 
 namespace GeoLib
 {
diff --git a/GeoLib/Triangle.cpp b/GeoLib/Triangle.cpp
index ea7137191526cc136a1b8b5e2b15649c87ff1142..3a96530feabd3599c2f85e855bdc0547593f716e 100644
--- a/GeoLib/Triangle.cpp
+++ b/GeoLib/Triangle.cpp
@@ -14,14 +14,10 @@
 
 #include "Triangle.h"
 
-// GeoLib
+#include "Point.h"
 #include "AnalyticalGeometry.h"
 
-// MathLib
-#include "LinAlg/Solvers/GaussAlgorithm.h"
-#include "MathTools.h"
-#include "LinAlg/Dense/DenseMatrix.h"
-#include "Vector3.h"
+#include "MathLib/LinAlg/Solvers/GaussAlgorithm.h"
 
 namespace GeoLib {
 
diff --git a/GeoLib/Triangle.h b/GeoLib/Triangle.h
index cbc22cc00e01f309e95625774b37004ae6ab9b87..893c7b0db7128d8ef8b41c3b93bc6371f4a58de3 100644
--- a/GeoLib/Triangle.h
+++ b/GeoLib/Triangle.h
@@ -17,11 +17,12 @@
 
 #include <vector>
 
-// GeoLib
-#include "Point.h"
+#include "MathLib/Point3d.h"
 
 namespace GeoLib {
 
+class Point;
+
 /** \brief Class Triangle consists of a reference to a point vector and
  * a vector that stores the indices in the point vector.
  * A surface is composed by triangles. The class Surface stores the position