diff --git a/Applications/DataHolderLib/InitialCondition.h b/Applications/DataHolderLib/InitialCondition.h
deleted file mode 100644
index 693d8f37c0791b1073a2841ad582cef402e7df5b..0000000000000000000000000000000000000000
--- a/Applications/DataHolderLib/InitialCondition.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/**
- * \file
- * \author Karsten Rink
- * \date   2010-02-04
- * \brief  Definition of the Color class.
- *
- * \copyright
- * Copyright (c) 2012-2020, OpenGeoSys Community (http://www.opengeosys.org)
- *            Distributed under a Modified BSD License.
- *              See accompanying file LICENSE.txt or
- *              http://www.opengeosys.org/project/license
- *
- *
- */
-
-#pragma once
-
-#include <array>
-#include <map>
-#include <string>
-
-namespace DataHolderLib
-{
-using Color = std::array<unsigned char, 4>;
-
-Color createColor(unsigned char r, unsigned char g, unsigned char b);
-
-Color createColor(unsigned char r, unsigned char g, unsigned char b,
-                  unsigned char a);
-
-/// Returns a random RGB colour.
-Color getRandomColor();
-
-/// Uses a color-lookup-table (in form of a map) to return a colour for a
-/// specified name. If the name is not in the colortable a new entry is created
-/// with the new name and a random colour.
-Color const getColor(const std::string& id,
-                     std::map<std::string, DataHolderLib::Color>& colors);
-
-/// Convenience function to use the getColor method with numbers as identifiers.
-Color const getColor(double id,
-                     std::map<std::string, DataHolderLib::Color>& colors);
-}  // namespace DataHolderLib
diff --git a/Applications/DataHolderLib/Project.cpp b/Applications/DataHolderLib/Project.cpp
index 49942e9f08981818af640b7e8cd1157450a2c233..097367bea3919b0085cbf13a76c89080edc18ae8 100644
--- a/Applications/DataHolderLib/Project.cpp
+++ b/Applications/DataHolderLib/Project.cpp
@@ -60,11 +60,6 @@ bool Project::removeMesh(const std::string &name)
     return false;
 }
 
-bool Project::meshExists(const std::string &name) const
-{
-    return findMeshByName(name) != _mesh_vec.end();
-}
-
 bool Project::getUniqueName(std::string &name) const
 {
     int count(0);
diff --git a/Applications/DataHolderLib/Project.h b/Applications/DataHolderLib/Project.h
index 3af09063bbb1c9a486aa53c751b6442f1a91ed94..02ca92343018e77967d2618e0b7c8fe6f53ee0eb 100644
--- a/Applications/DataHolderLib/Project.h
+++ b/Applications/DataHolderLib/Project.h
@@ -106,10 +106,6 @@ private:
     /// Returns false and changes the provided name to a unique name otherwise.
     bool getUniqueName(std::string &name) const;
 
-    /// Returns true if a mesh with the same name exists and false otherwise.
-    bool meshExists(const std::string &name) const;
-
-
     /// Returns an iterator to the first found mesh with the given name.
     std::vector<std::unique_ptr<MeshLib::Mesh>>::const_iterator findMeshByName(
         std::string const& name) const;
diff --git a/Applications/FileIO/GMSInterface.cpp b/Applications/FileIO/GMSInterface.cpp
index 2d0982063d3cda00391f4d299f8f47fd5af1cd4d..2f146742c159afce8ee01e948889481f7345e2a3 100644
--- a/Applications/FileIO/GMSInterface.cpp
+++ b/Applications/FileIO/GMSInterface.cpp
@@ -132,20 +132,6 @@ int GMSInterface::readBoreholesFromGMS(std::vector<GeoLib::Point*>* boreholes,
     return 1;
 }
 
-/*
-   // all boreholes to GMS which each borehole in a single file
-   void StationIO::writeBoreholesToGMS(const std::vector<GeoLib::Point*>
-   *stations)
-   {
-    //std::vector<std::string> soilID(1);
-    std::vector<std::string> soilID = readSoilIDfromFile("d:/BodeTimeline.txt");
-    for (std::size_t i=0; i<stations->size(); i++)
-        StationIO::writeBoreholeToGMS(static_cast<GeoLib::StationBorehole*>((*stations)[i]),
-   std::string("Borehole-" +
-   static_cast<GeoLib::StationBorehole*>((*stations)[i])->getName() + ".txt"),
-   soilID); StationIO::writeSoilIDTable(soilID, "SoilIDReference.txt");
-   }
- */
 void GMSInterface::writeBoreholesToGMS(
     const std::vector<GeoLib::Point*>* stations, const std::string& filename)
 {
@@ -177,7 +163,6 @@ void GMSInterface::writeBoreholesToGMS(
             {
                 continue;
             }
-            // idx = getSoilID(soilID, soilNames[i]);
             current_soil_name = soilNames[i];
 
             out << station->getName() << "\t" << std::fixed
@@ -195,63 +180,6 @@ void GMSInterface::writeBoreholesToGMS(
     out.close();
 }
 
-std::size_t GMSInterface::getSoilID(std::vector<std::string>& soilID,
-                                    std::string& soilName)
-{
-    for (std::size_t j = 0; j < soilID.size(); j++)
-    {
-        if (soilID[j] == soilName)
-        {
-            return j;
-        }
-    }
-    soilID.push_back(soilName);
-    return soilID.size() - 1;
-}
-
-int GMSInterface::writeSoilIDTable(const std::vector<std::string>& soilID,
-                                   const std::string& filename)
-{
-    std::ofstream out(filename.c_str(), std::ios::out);
-
-    // write header
-    out << "ID"
-        << "\t" << std::fixed << "Soil name"
-        << "\n";
-
-    // write table
-    std::size_t nIDs = soilID.size();
-    for (std::size_t i = 0; i < nIDs; i++)
-    {
-        out << i << "\t" << std::fixed << soilID[i] << "\t"
-            << "\n";
-    }
-    out.close();
-
-    return 1;
-}
-
-std::vector<std::string> GMSInterface::readSoilIDfromFile(
-    const std::string& filename)
-{
-    std::vector<std::string> soilID;
-    std::string line;
-
-    std::ifstream in(filename.c_str());
-
-    if (in.is_open())
-    {
-        while (std::getline(in, line))
-        {
-            BaseLib::trim(line);
-            soilID.push_back(line);
-        }
-    }
-    in.close();
-
-    return soilID;
-}
-
 MeshLib::Mesh* GMSInterface::readGMS3DMMesh(const std::string& filename)
 {
     std::string line;
diff --git a/Applications/FileIO/GMSInterface.h b/Applications/FileIO/GMSInterface.h
index 6b3a6d9c9c2f576157bf220c83f81664cabe39bc..94cb79e7e1f7e6ee74f14724d9b113ec7ce66161 100644
--- a/Applications/FileIO/GMSInterface.h
+++ b/Applications/FileIO/GMSInterface.h
@@ -59,31 +59,8 @@ public:
     static int readBoreholesFromGMS(std::vector<GeoLib::Point*>* boreholes,
                                     const std::string& filename);
 
-    /// Writes a file that assigns each soilID-index in the GMS export file a
-    /// name.
-    static int writeSoilIDTable(const std::vector<std::string>& soilID,
-                                const std::string& filename);
-
     /// Reads a GMS *.3dm file and converts it to an CFEMesh.
     static MeshLib::Mesh* readGMS3DMMesh(const std::string& filename);
-
-private:
-    /**
-     * \brief Reads SoilIDs for Borehole export from an external file
-     *
-     * The method expects a file with the name of one stratigraphic layer at
-     * each line. These layers are assigned ascending IDs, i.e. the first name
-     * gets index 0, the second line gets index 1, etc. \return An array with
-     * the names of the stratigraphic layers in which the index for each string
-     * equals its ID.
-     */
-    static std::vector<std::string> readSoilIDfromFile(
-        const std::string& filename);
-
-    /// Finds the ID assigned to soilName or creates a new one ( this method is
-    /// called from writeBoreholeToGMS() )
-    static std::size_t getSoilID(std::vector<std::string>& soilID,
-                                 std::string& soilName);
 };
 
 }  // namespace FileIO
diff --git a/BaseLib/FileFinder.cpp b/BaseLib/FileFinder.cpp
index c365b0b8fcf1471a04dcf94ebdd73b93b3ceb531..bfcd7ca812a972bc990a6abc0499069620d3887d 100644
--- a/BaseLib/FileFinder.cpp
+++ b/BaseLib/FileFinder.cpp
@@ -52,24 +52,4 @@ void FileFinder::addDirectory(std::string const& dir)
         _directories.push_back(dir);
     }
 }
-
-std::string FileFinder::getPath(std::string const& filename) const
-{
-    if (_directories.empty())
-        ERR("FileFinder::getPath(): No directories set.");
-
-    for (auto const& dir : _directories)
-    {
-        std::string testDir(dir);
-        std::ifstream is(testDir.append(filename).c_str());
-        if (is.good())
-        {
-            is.close();
-            return testDir;
-        }
-    }
-    ERR("FileFinder::getPath(): File not found.");
-    return filename;
-}
-
-} // end namespace BaseLib
+}  // namespace BaseLib
diff --git a/BaseLib/FileFinder.h b/BaseLib/FileFinder.h
index 6214f90777cce0895a0e4653ed6d165601e02b6e..841085a22ac803b8a980d9d9050ec90ee71c8b10 100644
--- a/BaseLib/FileFinder.h
+++ b/BaseLib/FileFinder.h
@@ -45,13 +45,6 @@ public:
      */
     void addDirectory(std::string const& dir);
 
-    /**
-     * Given a filename, this method will return the complete path where this file can be found.
-     * If the file is located in more than one of the directories in the search list, only the
-     * first location will be returned.
-     */
-    std::string getPath(std::string const& filename) const;
-
 private:
     std::vector<std::string> _directories;
 };
diff --git a/BaseLib/FileTools.cpp b/BaseLib/FileTools.cpp
index 10b1c1dae22ccf83a3ee6fdab34b7e806146f2ac..835635b1996cf87d95a03b0448701a3696450bbd 100644
--- a/BaseLib/FileTools.cpp
+++ b/BaseLib/FileTools.cpp
@@ -61,15 +61,6 @@ double swapEndianness(double const& v)
     return b.v;
 }
 
-/**
- * \brief truncate a file
- */
-void truncateFile( std::string const& filename)
-{
-    std::ofstream ofs(filename.c_str(), std::ios_base::trunc);
-    ofs.close();
-}
-
 namespace
 {
 
diff --git a/BaseLib/FileTools.h b/BaseLib/FileTools.h
index a13759ffe65263e310aebba91f9e56a00b2863b2..33ce35c9af98196e042f5c4e0432178f66b03a82 100644
--- a/BaseLib/FileTools.h
+++ b/BaseLib/FileTools.h
@@ -105,8 +105,6 @@ std::vector<T> readBinaryArray(std::string const& filename, std::size_t const n)
     return std::vector<T>();
 }
 
-void truncateFile(std::string const& filename);
-
 /**
  * Extracts basename from given pathname with extension.
  *
diff --git a/BaseLib/IO/Writer.cpp b/BaseLib/IO/Writer.cpp
index 82cbf086a2ab5f6375653acef632af84637adc8e..7c5c375c6e359326b2d2ec11aaf15e473a45324b 100644
--- a/BaseLib/IO/Writer.cpp
+++ b/BaseLib/IO/Writer.cpp
@@ -70,11 +70,5 @@ void Writer::setPrecision(unsigned int precision)
 {
     _out.precision(precision);
 }
-
-void Writer::setFormat(std::ios_base::fmtflags flags)
-{
-    _out.setf(flags);
-}
-
-} // namespace IO
-} // namespace BaseLib
+}  // namespace IO
+}  // namespace BaseLib
diff --git a/BaseLib/IO/Writer.h b/BaseLib/IO/Writer.h
index 47f6f7e5f1fe6844ae5204595ece8ad811297dee..e556863b4af32547144ec6b63081bfeda36f74cf 100644
--- a/BaseLib/IO/Writer.h
+++ b/BaseLib/IO/Writer.h
@@ -43,9 +43,6 @@ public:
     /// @brief Sets the decimal precision.
     void setPrecision(unsigned int precision);
 
-    /// @brief Sets the format (either ios::scientific or ios::fixed);
-    void setFormat(std::ios_base::fmtflags flags);
-
 protected:
     /// @brief Writes the object to the internal stream.
     /// This method must be implemented by a subclass.
diff --git a/BaseLib/IO/XmlIO/Qt/XMLQtInterface.cpp b/BaseLib/IO/XmlIO/Qt/XMLQtInterface.cpp
index 299031327511e12ffc7b1ca2dfb8fe9435c1c185..1208448c2dbccb11e2b58c22a297303e81109cf3 100644
--- a/BaseLib/IO/XmlIO/Qt/XMLQtInterface.cpp
+++ b/BaseLib/IO/XmlIO/Qt/XMLQtInterface.cpp
@@ -95,25 +95,6 @@ int XMLQtInterface::isValid() const
     return 0;
 }
 
-int XMLQtInterface::insertStyleFileDefinition(const QString &fileName) const
-{
-    std::string path = fileName.toStdString();
-    std::fstream stream(path.c_str());
-    std::string styleDef("\n<?xml-stylesheet type=\"text/xsl\" href=\"OpenGeoSysGLI.xsl\"?>");
-
-    if (!stream.is_open())
-    {
-        WARN("XMLQtInterface::insertStyleFileDefinition(): Could not open file %s.",
-             path.c_str());
-        return 0;
-    }
-
-    stream.seekp(43 * sizeof(char),std::ios_base::beg); // go to the correct position in the stream
-    stream.write(styleDef.c_str(), 60 * sizeof(char)); // write new line with xml-stylesheet definition
-    stream.close();
-    return 1;
-}
-
 bool XMLQtInterface::checkHash() const
 {
     QString md5FileName(_fileName + ".md5");
@@ -147,17 +128,5 @@ bool XMLQtInterface::checkHash() const
         WARN("File is valid but could not write hashfile!");
     return true;
 }
-
-bool XMLQtInterface::isHashGood(const QByteArray &hash) const
-{
-    QByteArray fileHash = QCryptographicHash::hash(_fileData, QCryptographicHash::Md5);
-    if(hash != fileHash)
-    {
-        INFO("Hashfile does not match data ... checking file ...");
-        return false;
-    }
-    return true;
-}
-
-} // end namespace IO
-} // end namespace BaseLib
+}  // namespace IO
+}  // namespace BaseLib
diff --git a/BaseLib/IO/XmlIO/Qt/XMLQtInterface.h b/BaseLib/IO/XmlIO/Qt/XMLQtInterface.h
index d0a70baf14161e9f46701b4de33e79f02dda8f3f..a5671efc9dd2a3ea22de467b5d607d7d39ecaa24 100644
--- a/BaseLib/IO/XmlIO/Qt/XMLQtInterface.h
+++ b/BaseLib/IO/XmlIO/Qt/XMLQtInterface.h
@@ -33,9 +33,6 @@ public:
     explicit XMLQtInterface(QString schemaFile = "");
     virtual ~XMLQtInterface() = default;
 
-    /// As QXMLStreamWriter seems currently unable to include style-file links into xml-files, this method will workaround this issue and include the stylefile link.
-    int insertStyleFileDefinition(const QString &fileName) const;
-
     /// Reads the file. In an overriden function in the child class be sure to call
     /// XMLQtInterface::readFile(fileName).
     virtual int readFile(const QString &fileName);
@@ -49,9 +46,6 @@ protected:
     /// If no hash file exists, the xml-file is validated and a hash file is written if the xml-file was valid.
     bool checkHash() const;
 
-    /// Checks if the given file is conform to the given hash.
-    bool isHashGood(const QByteArray &hash) const;
-
     QString _schemaFile;
 
     /// Caches the actual file contents when reading.
diff --git a/BaseLib/StringTools.cpp b/BaseLib/StringTools.cpp
index dadcdd9749372b85a9153920f90bf2897d9d05b7..a5ee69ff12ff310233ecd44907232509681d7fcf 100644
--- a/BaseLib/StringTools.cpp
+++ b/BaseLib/StringTools.cpp
@@ -82,13 +82,6 @@ void simplify(std::string &str)
     );
 }
 
-std::string padLeft(std::string const& str, int maxlen, char ch)
-{
-    std::stringstream ss(str);
-    ss << std::right << std::setw(maxlen) << std::setfill(ch) << str;
-    return ss.str();
-}
-
 std::string const& tostring(std::string const& value)
 {
     return value;
diff --git a/BaseLib/StringTools.h b/BaseLib/StringTools.h
index 60db458a5d564fcc3ca41fec4575a3732ac93f4b..382a65cc3d82ac1ec6d2dffc276a46ab36e3caa6 100644
--- a/BaseLib/StringTools.h
+++ b/BaseLib/StringTools.h
@@ -72,12 +72,6 @@ void trim(std::string &str, char ch=' ');
  */
 void simplify(std::string &str);
 
-/**
- * Returns the string which is right aligned with padding on the left.
- */
-std::string padLeft(std::string const& str, int maxlen, char ch=' ');
-
-
 //! Method for handling conversion to string uniformly across all types and std::string; see std::string overload below.
 template<typename T> std::string tostring(T const& value)
 {
diff --git a/GeoLib/AnalyticalGeometry.cpp b/GeoLib/AnalyticalGeometry.cpp
index 138b14f1183119865f174699bf9ccff466f20423..eb19bfb4b165366e65ae4361bb85e29dc2b227c1 100644
--- a/GeoLib/AnalyticalGeometry.cpp
+++ b/GeoLib/AnalyticalGeometry.cpp
@@ -274,28 +274,6 @@ bool lineSegmentsIntersect(const GeoLib::Polyline* ply,
     return false;
 }
 
-void computeRotationMatrixToXZ(MathLib::Vector3 const& plane_normal, MathLib::DenseMatrix<double> & rot_mat)
-{
-    // *** some frequently used terms ***
-    // n_1^2 + n_2^2
-    const double h0(plane_normal[0] * plane_normal[0] + plane_normal[1] * plane_normal[1]);
-    // 1 / sqrt (n_1^2 + n_2^2)
-    const double h1(1.0 / sqrt(h0));
-    // 1 / sqrt (n_1^2 + n_2^2 + n_3^2)
-    const double h2(1.0 / sqrt(h0 + plane_normal[2] * plane_normal[2]));
-
-    // calc rotation matrix
-    rot_mat(0, 0) = plane_normal[1] * h1;
-    rot_mat(0, 1) = -plane_normal[0] * h1;
-    rot_mat(0, 2) = 0.0;
-    rot_mat(1, 0) = plane_normal[0] * h2;
-    rot_mat(1, 1) = plane_normal[1] * h2;
-    rot_mat(1, 2) = plane_normal[2] * h2;
-    rot_mat(2, 0) = plane_normal[0] * plane_normal[2] * h1 * h2;
-    rot_mat(2, 1) = plane_normal[1] * plane_normal[2] * h1 * h2;
-    rot_mat(2, 2) = -sqrt(h0) * h2;
-}
-
 void rotatePoints(MathLib::DenseMatrix<double> const& rot_mat, std::vector<GeoLib::Point*> &pnts)
 {
     rotatePoints(rot_mat, pnts.begin(), pnts.end());
diff --git a/GeoLib/AnalyticalGeometry.h b/GeoLib/AnalyticalGeometry.h
index 58a06eb54277170c71dc3cf553d9bedefc917b5a..8cc6c1644265a747683e34503b0050cc28463b94 100644
--- a/GeoLib/AnalyticalGeometry.h
+++ b/GeoLib/AnalyticalGeometry.h
@@ -106,14 +106,6 @@ void compute3DRotationMatrixToX(MathLib::Vector3  const& v, T_MATRIX & rot_mat);
 template <class T_MATRIX>
 void computeRotationMatrixToXY(MathLib::Vector3 const& n, T_MATRIX& rot_mat);
 
-/**
- * Method computes the rotation matrix that rotates the given vector parallel to the \f$y\f$ axis.
- * @param plane_normal the (3d) vector that is rotated parallel to the \f$y\f$ axis
- * @param rot_mat 3x3 rotation matrix
- */
-void computeRotationMatrixToXZ(MathLib::Vector3 const& plane_normal,
-                               MathLib::DenseMatrix<double> & rot_mat);
-
 /**
  * rotate points according to the rotation matrix
  * @param rot_mat 3x3 dimensional rotation matrix
diff --git a/GeoLib/IO/XmlIO/Qt/XmlGmlInterface.cpp b/GeoLib/IO/XmlIO/Qt/XmlGmlInterface.cpp
index 5257d7c34362253115859aa3c29b2d3bda2a4d40..3d600256106e548806177ef95ff99d51837f45c1 100644
--- a/GeoLib/IO/XmlIO/Qt/XmlGmlInterface.cpp
+++ b/GeoLib/IO/XmlIO/Qt/XmlGmlInterface.cpp
@@ -485,7 +485,6 @@ bool XmlGmlInterface::write()
         INFO("XmlGmlInterface::write(): Surface vector is empty, no surfaces written to file.");
 
 
-    //insertStyleFileDefinition(filename);
     std::string xml = doc.toString().toStdString();
     _out << xml;
 
diff --git a/GeoLib/IO/XmlIO/Qt/XmlStnInterface.cpp b/GeoLib/IO/XmlIO/Qt/XmlStnInterface.cpp
index 44ed39d79e2cfdc1526a81ec0222edb131c47bc1..4c03bf10b0b87f14d4f9df6f3382081b830a6d6a 100644
--- a/GeoLib/IO/XmlIO/Qt/XmlStnInterface.cpp
+++ b/GeoLib/IO/XmlIO/Qt/XmlStnInterface.cpp
@@ -32,163 +32,6 @@ namespace GeoLib
 {
 namespace IO
 {
-/// Reads the stratigraphy of a borehole from an xml-file using the RapidXML
-/// parser
-static void rapidReadStratigraphy(const rapidxml::xml_node<>* strat_root,
-                                  GeoLib::StationBorehole* borehole)
-{
-    double depth_check((*borehole)[2]);
-
-    for (rapidxml::xml_node<>* horizon_node = strat_root->first_node("horizon");
-         horizon_node;
-         horizon_node = horizon_node->next_sibling())
-    {
-        if (horizon_node->first_attribute("id") &&
-            horizon_node->first_attribute("x") &&
-            horizon_node->first_attribute("y") &&
-            horizon_node->first_attribute("z"))
-        {
-            std::string horizon_name("[NN]");
-            if (horizon_node->first_node("name"))
-            {
-                horizon_name = horizon_node->first_node("name")->value();
-            }
-            /* add other horizon features here */
-
-            double depth(
-                strtod(horizon_node->first_attribute("z")->value(), nullptr));
-            if (fabs(depth - depth_check) >
-                std::numeric_limits<double>::
-                    epsilon())  // skip soil-layer if its thickness is zero
-            {
-                borehole->addSoilLayer(
-                    strtod(horizon_node->first_attribute("x")->value(),
-                           nullptr),
-                    strtod(horizon_node->first_attribute("y")->value(),
-                           nullptr),
-                    depth,
-                    horizon_name);
-                depth_check = depth;
-            }
-            else
-            {
-                WARN(
-                    "XmlStnInterface::rapidReadStratigraphy(): Skipped layer "
-                    "'%s' in borehole '%s' because of thickness 0.0.",
-                    horizon_name.c_str(),
-                    borehole->getName().c_str());
-            }
-        }
-        else
-        {
-            WARN(
-                "XmlStnInterface::rapidReadStratigraphy(): Attribute missing "
-                "in <horizon> tag.");
-        }
-    }
-}
-
-/// Reads GeoLib::Station- or StationBorehole-objects from an xml-file using the
-/// RapidXML parser
-static void rapidReadStations(const rapidxml::xml_node<>* station_root,
-                              std::vector<GeoLib::Point*>* stations,
-                              const std::string& file_name)
-{
-    for (rapidxml::xml_node<>* station_node = station_root->first_node();
-         station_node;
-         station_node = station_node->next_sibling())
-    {
-        if (station_node->first_attribute("id") &&
-            station_node->first_attribute("x") &&
-            station_node->first_attribute("y"))
-        {
-            double zVal(0.0);
-            if (station_node->first_attribute("z"))
-            {
-                zVal = strtod(station_node->first_attribute("z")->value(),
-                              nullptr);
-            }
-
-            std::string station_name;
-            std::string sensor_data_file_name;
-            std::string bdate_str("0000-00-00");
-            double station_value(0.0);
-            double borehole_depth(0.0);
-            if (station_node->first_node("name"))
-            {
-                station_name = station_node->first_node("name")->value();
-            }
-            if (station_node->first_node("sensordata"))
-            {
-                sensor_data_file_name =
-                    station_node->first_node("sensordata")->value();
-            }
-            if (station_node->first_node("value"))
-            {
-                station_value =
-                    strtod(station_node->first_node("value")->value(), nullptr);
-            }
-            /* add other station features here */
-
-            if (std::string(station_node->name()) == "station")
-            {
-                auto* s = new GeoLib::Station(
-                    strtod(station_node->first_attribute("x")->value(),
-                           nullptr),
-                    strtod(station_node->first_attribute("y")->value(),
-                           nullptr),
-                    zVal,
-                    station_name);
-                s->setStationValue(station_value);
-                if (!sensor_data_file_name.empty())
-                {
-                    s->addSensorDataFromCSV(BaseLib::copyPathToFileName(
-                        sensor_data_file_name, file_name));
-                }
-                stations->push_back(s);
-            }
-            else if (std::string(station_node->name()) == "borehole")
-            {
-                if (station_node->first_node("bdepth"))
-                {
-                    borehole_depth = strtod(
-                        station_node->first_node("bdepth")->value(), nullptr);
-                }
-                if (station_node->first_node("bdate"))
-                {
-                    bdate_str = station_node->first_node("bdate")->value();
-                }
-                /* add other borehole features here */
-
-                GeoLib::StationBorehole* s =
-                    GeoLib::StationBorehole::createStation(
-                        station_name,
-                        strtod(station_node->first_attribute("x")->value(),
-                               nullptr),
-                        strtod(station_node->first_attribute("y")->value(),
-                               nullptr),
-                        zVal,
-                        borehole_depth,
-                        bdate_str);
-                s->setStationValue(station_value);
-
-                if (station_node->first_node("strat"))
-                {
-                    rapidReadStratigraphy(station_node->first_node("strat"), s);
-                }
-
-                stations->push_back(s);
-            }
-        }
-        else
-        {
-            WARN(
-                "XmlStnInterface::rapidReadStations(): Attribute missing in "
-                "<station> tag.");
-        }
-    }
-}
-
 XmlStnInterface::XmlStnInterface(GeoLib::GEOObjects& geo_objs)
     : XMLQtInterface("OpenGeoSysSTN.xsd"), _geo_objs(geo_objs)
 {
@@ -513,69 +356,5 @@ void XmlStnInterface::writeBoreholeData(QDomDocument &doc,
         }
     }
 }
-
-int XmlStnInterface::rapidReadFile(const std::string &fileName)
-{
-    std::ifstream in(fileName.c_str());
-    if (in.fail())
-    {
-        ERR("XmlStnInterface::rapidReadFile(): Can't open xml-file %s.", fileName.c_str());
-        return 0;
-    }
-
-    // buffer file
-    in.seekg(0, std::ios::end);
-    std::size_t length = in.tellg();
-    in.seekg(0, std::ios::beg);
-    auto* buffer = new char[length + 1];
-    in.read(buffer, length);
-    buffer[in.gcount()] = '\0';
-    in.close();
-
-    // build DOM tree
-    rapidxml::xml_document<> doc;
-    doc.parse<0>(buffer);
-
-    // parse content
-    if (std::string(doc.first_node()->name()) != "OpenGeoSysSTN")
-    {
-        ERR("XmlStnInterface::readFile() - Unexpected XML root.");
-        return 0;
-    }
-
-    // iterate over all station lists
-    for (rapidxml::xml_node<>* station_list = doc.first_node()->first_node(); station_list;
-         station_list = station_list->next_sibling())
-    {
-        auto stations = std::make_unique<std::vector<GeoLib::Point*>>();
-        std::string stnName("[NN]");
-
-        stnName = station_list->first_node("name")->value();
-        for (rapidxml::xml_node<>* list_item = station_list->first_node(); list_item;
-             list_item = list_item->next_sibling())
-        {
-            std::string b(list_item->name());
-            if (b == "stations")
-            {
-                rapidReadStations(list_item, stations.get(), fileName);
-            }
-            if (b == "boreholes")
-            {
-                rapidReadStations(list_item, stations.get(), fileName);
-            }
-        }
-
-        if (!stations->empty())
-        {
-            _geo_objs.addStationVec(std::move(stations), stnName);
-        }
-    }
-
-    doc.clear();
-    delete [] buffer;
-
-    return 1;
-}
-
-} // end namespace IO
-} // end namespace GeoLib
+}  // namespace IO
+}  // namespace GeoLib
diff --git a/GeoLib/IO/XmlIO/Qt/XmlStnInterface.h b/GeoLib/IO/XmlIO/Qt/XmlStnInterface.h
index 24f66094086c65ed90ba5e2ff00df2060858b6b2..e4a0021d07e2c4e67e864f3d2f077cf1f70a8743 100644
--- a/GeoLib/IO/XmlIO/Qt/XmlStnInterface.h
+++ b/GeoLib/IO/XmlIO/Qt/XmlStnInterface.h
@@ -44,9 +44,6 @@ public:
         return readFile(QString(fname.c_str())) != 0;
     }
 
-    /// Reads an xml-file using the RapidXML parser integrated in the source code (i.e. this function is usable without Qt)
-    int rapidReadFile(const std::string &fileName);
-
 protected:
     bool write() override;
 
diff --git a/GeoLib/StationBorehole.cpp b/GeoLib/StationBorehole.cpp
index 35f278d4aea3974f7ba2f5c2a3bb20c4063f9e65..8682faa678911e16e89f1e4a7ef550a6ab1b70bf 100644
--- a/GeoLib/StationBorehole.cpp
+++ b/GeoLib/StationBorehole.cpp
@@ -54,76 +54,6 @@ StationBorehole::~StationBorehole()
     }
 }
 
-int StationBorehole::readStratigraphyFile(const std::string &path,
-                                          std::vector<std::list<std::string> > &data)
-{
-    std::string line;
-    std::ifstream in( path.c_str() );
-
-    if (!in.is_open())
-    {
-        WARN("StationBorehole::readStratigraphyFile() - Could not open file %s.", path.c_str());
-        return 0;
-    }
-
-    while (std::getline(in, line))
-    {
-        std::list<std::string> fields = BaseLib::splitString(line, '\t');
-        data.push_back(fields);
-    }
-
-    in.close();
-
-    return 1;
-}
-
-int StationBorehole::addLayer(std::list<std::string> fields, StationBorehole* borehole)
-{
-    if (fields.size() >= 4) /* check if there are enough fields to create a borehole object */
-    {
-        if (fields.front() == borehole->_name) /* check if the name of the
-                                                  borehole matches the name in
-                                                  the data */
-        {
-            fields.pop_front();
-
-            // int layer = atoi(fields.front().c_str());
-            fields.pop_front();
-
-            ERR("StationBorehole::addLayer - assuming correct order");
-            double thickness(
-                strtod(BaseLib::replaceString(",", ".", fields.front()).c_str(),
-                       nullptr));
-            fields.pop_front();
-            borehole->addSoilLayer(thickness, fields.front());
-        }
-    }
-    else
-    {
-        WARN("StationBorehole::addLayer() - Unexpected file format (Borehole %s).", borehole->_name.c_str());
-        return 0;
-    }
-    return 1;
-}
-
-int StationBorehole::addStratigraphy(const std::vector<Point*> &profile, const std::vector<std::string> &soil_names)
-{
-    if (((profile.size() - 1) == soil_names.size()) && (!soil_names.empty()))
-    {
-        this->_profilePntVec.push_back(profile[0]);
-        std::size_t nLayers = soil_names.size();
-        for (std::size_t i=0; i<nLayers; i++)
-        {
-            this->_profilePntVec.push_back(profile[i+1]);
-            this->_soilName.push_back(soil_names[i]);
-        }
-        return 1;
-    }
-
-    ERR("Error in StationBorehole::addStratigraphy() - Length of parameter vectors does not match.");
-    return 0;
-}
-
 StationBorehole* StationBorehole::createStation(const std::string &line)
 {
     StationBorehole* borehole = new StationBorehole();
@@ -180,16 +110,6 @@ StationBorehole* StationBorehole::createStation(const std::string &name,
     return station;
 }
 
-void StationBorehole::createSurrogateStratigraphies(std::vector<Point*>* boreholes)
-{
-    std::size_t nBoreholes = boreholes->size();
-    for (std::size_t i = 0; i < nBoreholes; i++)
-    {
-        auto* bore = static_cast<StationBorehole*>((*boreholes)[i]);
-        bore->addSoilLayer(bore->getDepth(), "depth");
-    }
-}
-
 void StationBorehole::addSoilLayer ( double thickness, const std::string &soil_name)
 {
     /*
diff --git a/GeoLib/StationBorehole.h b/GeoLib/StationBorehole.h
index 841752d47d3bece118576e7ef09797a58cd8da13..a54f14d99266a0f2cd6bb3addecef3fb61b159a0 100644
--- a/GeoLib/StationBorehole.h
+++ b/GeoLib/StationBorehole.h
@@ -49,9 +49,6 @@ public:
                                           double depth,
                                           const std::string &date = "");
 
-    /// Adds a stratigraphy to a borehole given a vector of points of length "n" and a vector of soil names of length "n-1".
-    int addStratigraphy(const std::vector<Point*> &profile, const std::vector<std::string> &soil_names);
-
     // Returns the depth of the borehole
     double getDepth() const { return _depth; }
 
@@ -81,16 +78,6 @@ public:
     void addSoilLayer ( double x, double y, double z, const std::string &soil_name);
 
 private:
-    /// Adds a layer for the specified borehole profile based on the information given in the stringlist
-    static int addLayer(std::list<std::string> fields, StationBorehole* borehole);
-
-    /// Creates fake stratigraphies of only one layer with a thickness equal to the borehole depth
-    static void createSurrogateStratigraphies(std::vector<Point*>* boreholes);
-
-    /// Reads the specified file containing borehole stratigraphies into an vector of stringlists
-    static int readStratigraphyFile(const std::string &path,
-                                    std::vector<std::list<std::string> > &data);
-
     //long profile_type;
     //std::vector<long> _soilType;
     double _depth{0};  // depth of the borehole
diff --git a/GeoLib/Surface.cpp b/GeoLib/Surface.cpp
index 434fb4d3201f504a96daace21919c70e8bd4707d..cf8e002b80483d04f02b5c2773c53afad40756a0 100644
--- a/GeoLib/Surface.cpp
+++ b/GeoLib/Surface.cpp
@@ -108,17 +108,4 @@ bool Surface::isPntInSfc(MathLib::Point3d const& pnt, double eps) const
     }
     return _surface_grid->isPointInSurface(pnt, eps);
 }
-
-const Triangle* Surface::findTriangle(MathLib::Point3d const& pnt) const
-{
-    for (auto _sfc_triangle : _sfc_triangles)
-    {
-        if (_sfc_triangle->containsPoint(pnt))
-        {
-            return _sfc_triangle;
-        }
-    }
-    return nullptr;
-}
-
 }  // namespace GeoLib
diff --git a/GeoLib/Surface.h b/GeoLib/Surface.h
index 69be788ef9c9a57f839a28ae412fe0d21e91d572..a6b34763eafb62264bb8f26cfb4795da9ae5121d 100644
--- a/GeoLib/Surface.h
+++ b/GeoLib/Surface.h
@@ -71,14 +71,6 @@ public:
      */
     bool isPntInSfc(MathLib::Point3d const& pnt, double eps) const;
 
-    /**
-     * find a triangle in which the given point is located
-     * @param pnt the point
-     * @return a pointer to a triangle. nullptr is returned if the point is not
-     * contained in the surface
-     */
-    const Triangle* findTriangle(MathLib::Point3d const& pnt) const;
-
     const std::vector<Point*>* getPointVec() const { return &_sfc_pnts; }
     /**
      * method allows access to the internal axis aligned bounding box
diff --git a/GeoLib/Triangle.cpp b/GeoLib/Triangle.cpp
index fc1a16dfe0c7d508b450420c70b567094cc7223d..6ddb2b2fad92b56278fea81dc21f0485c97f3ea0 100644
--- a/GeoLib/Triangle.cpp
+++ b/GeoLib/Triangle.cpp
@@ -33,51 +33,4 @@ bool Triangle::containsPoint(MathLib::Point3d const& q, double eps) const
     GeoLib::Point const& c(*(_pnts[_pnt_ids[2]]));
     return MathLib::isPointInTriangle(q, a, b, c, eps);
 }
-
-bool Triangle::containsPoint2D (Point const& pnt) const
-{
-    GeoLib::Point const& a (*(_pnts[_pnt_ids[0]]));
-    GeoLib::Point const& b (*(_pnts[_pnt_ids[1]]));
-    GeoLib::Point const& c (*(_pnts[_pnt_ids[2]]));
-
-    // criterion: p-a = u0 * (b-a) + u1 * (c-a); 0 <= u0, u1 <= 1, u0+u1 <= 1
-    Eigen::Matrix2d mat;
-    mat(0,0) = b[0] - a[0];
-    mat(0,1) = c[0] - a[0];
-    mat(1,0) = b[1] - a[1];
-    mat(1,1) = c[1] - a[1];
-    Eigen::Vector2d y;
-    y << pnt[0]-a[0], pnt[1]-a[1];
-
-    y = mat.partialPivLu().solve(y);
-
-    const double delta (std::numeric_limits<double>::epsilon());
-    const double upper (1+delta);
-
-    // check if u0 and u1 fulfills the condition (with some delta)
-    return -delta <= y[0] && y[0] <= upper && -delta <= y[1] && y[1] <= upper &&
-           y[0] + y[1] <= upper;
-}
-
-void getPlaneCoefficients(Triangle const& tri, double c[3])
-{
-    GeoLib::Point const& p0 (*(tri.getPoint(0)));
-    GeoLib::Point const& p1 (*(tri.getPoint(1)));
-    GeoLib::Point const& p2 (*(tri.getPoint(2)));
-    Eigen::Matrix3d mat;
-    mat(0,0) = p0[0];
-    mat(0,1) = p0[1];
-    mat(0,2) = 1.0;
-    mat(1,0) = p1[0];
-    mat(1,1) = p1[1];
-    mat(1,2) = 1.0;
-    mat(2,0) = p2[0];
-    mat(2,1) = p2[1];
-    mat(2,2) = 1.0;
-    Eigen::Vector3d y;
-    y << p0[2], p1[2], p2[2];
-
-    Eigen::Map<Eigen::Vector3d>(c,3) = mat.partialPivLu().solve(y);
-}
-
-} // end namespace GeoLib
+}  // namespace GeoLib
diff --git a/GeoLib/Triangle.h b/GeoLib/Triangle.h
index f57b7dbe79b1995b0eb25a7e348d3f6776549a8f..e9388cd12bff3bb3d9eda0306fb0564d2c125688 100644
--- a/GeoLib/Triangle.h
+++ b/GeoLib/Triangle.h
@@ -62,21 +62,10 @@ public:
         MathLib::Point3d const& q,
         double eps = std::numeric_limits<float>::epsilon()) const;
 
-    /**
-     * projects the triangle points to the x-y-plane and
-     * checks if point pnt is contained into the triangle
-     * @param pnt the point to test for
-     * @return true, if the point is into the projected triangle
-     */
-    bool containsPoint2D(Point const& pnt) const;
-
 private:
     /// a vector of pointers to points the triangle is based on
     std::vector<Point*> const& _pnts;
     /// position of pointers to the geometric points
     std::array<std::size_t, 3> _pnt_ids;
 };
-
-void getPlaneCoefficients(Triangle const& tri, double c[3]);
-
-} // end namespace GeoLib
+}  // namespace GeoLib
diff --git a/MaterialLib/Adsorption/Adsorption.cpp b/MaterialLib/Adsorption/Adsorption.cpp
index 7a2f2624d1e8a17999b0d5634e89bdfb4ed3af91..4461066a81af0dde7fd3cdf4ad936a4f22a93ec8 100644
--- a/MaterialLib/Adsorption/Adsorption.cpp
+++ b/MaterialLib/Adsorption/Adsorption.cpp
@@ -72,31 +72,12 @@ double AdsorptionReaction::getEvaporationEnthalpy(double T_Ads) // in kJ/kg
 }
 
 
-// evaluate specific heat capacity of adsorbate follwing Nunez
-double AdsorptionReaction::getSpecificHeatCapacity(const double T_Ads)
-{
-    const double c[] = {4.224,-3.716e-3,9.351e-5,-7.1786e-7,-9.1266e-9,2.69247e-10,-2.773104e-12,1.553177e-14,-4.982795e-17,8.578e-20,-6.12423e-23};
-    double cp = 0.;
-    for (unsigned i = 0; i < sizeof(c) / sizeof(c[0]); i++)
-    {
-        cp += c[i] * pow(T_Ads, i);
-    }
-    return cp; // kJ/(kg*K)
-}
-
-
 double AdsorptionReaction::getMolarFraction(double xm, double M_this, double M_other)
 {
     return M_other*xm/(M_other*xm + M_this*(1.0-xm));
 }
 
 
-double AdsorptionReaction::getMassFraction(double xn, double M_this, double M_other)
-{
-    return M_this*xn/(M_this*xn + M_other*(1.0-xn));
-}
-
-
 double AdsorptionReaction::dMolarFraction(double xm, double M_this, double M_other)
 {
     return M_other * M_this
@@ -118,29 +99,6 @@ double AdsorptionReaction::getReactionRate(const double p_Ads, const double T_Ad
                                       // this the rate in terms of loading!
 }
 
-void AdsorptionReaction::getDReactionRate(const double p_Ads, const double T_Ads,
-                                     const double M_Ads, const double /*loading*/,
-                                     std::array<double, 3> &dqdr) const
-{
-    const double A = getPotential(p_Ads, T_Ads, M_Ads);
-    const double p_S = getEquilibriumVapourPressure(T_Ads);
-    const double dAdT = MaterialLib::PhysicalConstant::IdealGasConstant * log(p_S/p_Ads) / (M_Ads*1.e3);
-    const double dAdp = - MaterialLib::PhysicalConstant::IdealGasConstant * T_Ads / M_Ads / p_Ads;
-
-    const double W = characteristicCurve(A);
-    const double dWdA = dCharacteristicCurve(A);
-
-    const double rho_Ads = getAdsorbateDensity(T_Ads);
-    const double drhodT = - rho_Ads * getAlphaT(T_Ads);
-
-    dqdr = std::array<double, 3>{{
-        rho_Ads*dWdA*dAdp,
-        drhodT*W + rho_Ads*dWdA*dAdT,
-        -k_rate
-    }};
-}
-
-
 // Evaluate adsorbtion potential A
 double AdsorptionReaction::getPotential(const double p_Ads, double T_Ads, const double M_Ads) const
 {
diff --git a/MaterialLib/Adsorption/Adsorption.h b/MaterialLib/Adsorption/Adsorption.h
index 7f2c51739f1ce9c8168a2bd856acf0d92a1ab5c9..22c9943e69764a077fe36fb898af65297adc4e39 100644
--- a/MaterialLib/Adsorption/Adsorption.h
+++ b/MaterialLib/Adsorption/Adsorption.h
@@ -23,10 +23,8 @@ public:
     // TODO [CL] move those three methods to water properties class
     static double getEvaporationEnthalpy(const double T_Ads);
     static double getEquilibriumVapourPressure(const double T_Ads);
-    static double getSpecificHeatCapacity(const double T_Ads); // TODO [CL] why unused?
 
     static double getMolarFraction(double xm, double M_this, double M_other);
-    static double getMassFraction(double xn, double M_this, double M_other);
     static double dMolarFraction(double xm, double M_this, double M_other);
 
     static double getLoading(const double rho_curr, const double rho_dry);
@@ -39,17 +37,6 @@ public:
     double getReactionRate(const double p_Ads, const double T_Ads,
                            const double M_Ads,
                            const double loading) const override;
-    /**
-     * @brief get_d_reaction_rate
-     * @param p_Ads
-     * @param T_Ads
-     * @param M_Ads
-     * @param loading
-     * @param dqdr array containing the differentials wrt: p, T, C
-     */
-    virtual void getDReactionRate(const double p_Ads, const double T_Ads,
-                                     const double M_Ads, const double loading,
-                                     std::array<double, 3>& dqdr) const;
 
 protected:
     virtual double getAdsorbateDensity(const double T_Ads) const = 0;
diff --git a/MaterialLib/MPL/Property.cpp b/MaterialLib/MPL/Property.cpp
index fa39913285a7cf6e1a17dc52a69d0f45cb81995f..530019125a6526d541fc06da75b8725763ff2e74 100644
--- a/MaterialLib/MPL/Property.cpp
+++ b/MaterialLib/MPL/Property.cpp
@@ -49,11 +49,4 @@ PropertyDataType Property::d2Value(VariableArray const& /*variable_array*/,
 {
     return 0.0;
 }
-
-void Property::notImplemented(const std::string& property,
-                              const std::string& material) const
-{
-    OGS_FATAL("The property '%s' is not available on the '%s' scale",
-              property.c_str(), material.c_str());
-}
 }  // namespace MaterialPropertyLib
diff --git a/MaterialLib/MPL/Property.h b/MaterialLib/MPL/Property.h
index 4bf7f6e11f87d86aef7860ea42ed026caa7b2362..c46f1b38210c5c294c43ad9e773a79f56d84335c 100644
--- a/MaterialLib/MPL/Property.h
+++ b/MaterialLib/MPL/Property.h
@@ -48,11 +48,6 @@ class Property
 {
 public:
     virtual ~Property() = default;
-    /// This method is called when a property is used for the wrong kind of
-    /// material, or if the property is not implemented on this kind of material
-    /// yet.
-    void notImplemented(const std::string& property,
-                        const std::string& material) const;
     /// This virtual method simply returns the private _value attribute without
     /// changing it.
     virtual PropertyDataType value() const;
diff --git a/MaterialLib/TwoPhaseModels/TwoPhaseFlowWithPPMaterialProperties.cpp b/MaterialLib/TwoPhaseModels/TwoPhaseFlowWithPPMaterialProperties.cpp
index 205094692065ef70e270b8b53773be1c6f558d0f..bbea95d169bea5b66a3010f13fe194f6cb1c29c5 100644
--- a/MaterialLib/TwoPhaseModels/TwoPhaseFlowWithPPMaterialProperties.cpp
+++ b/MaterialLib/TwoPhaseModels/TwoPhaseFlowWithPPMaterialProperties.cpp
@@ -90,16 +90,6 @@ double TwoPhaseFlowWithPPMaterialProperties::getGasDensity(const double p,
     return _gas_density->getValue(vars);
 }
 
-double TwoPhaseFlowWithPPMaterialProperties::getGasDensityDerivative(
-    const double p, const double T) const
-{
-    ArrayType vars;
-    vars[static_cast<int>(MaterialLib::Fluid::PropertyVariableType::T)] = T;
-    vars[static_cast<int>(MaterialLib::Fluid::PropertyVariableType::p)] = p;
-
-    return _gas_density->getdValue(vars,
-                                   MaterialLib::Fluid::PropertyVariableType::p);
-}
 double TwoPhaseFlowWithPPMaterialProperties::getLiquidViscosity(
     const double p, const double T) const
 {
diff --git a/MaterialLib/TwoPhaseModels/TwoPhaseFlowWithPPMaterialProperties.h b/MaterialLib/TwoPhaseModels/TwoPhaseFlowWithPPMaterialProperties.h
index 618bf871e2447a5b3bc6d18df6734e3e1d91c217..a5576ffee84be841d6693db3ea6b4435c6da8e2d 100644
--- a/MaterialLib/TwoPhaseModels/TwoPhaseFlowWithPPMaterialProperties.h
+++ b/MaterialLib/TwoPhaseModels/TwoPhaseFlowWithPPMaterialProperties.h
@@ -98,7 +98,6 @@ public:
     double getGasDensity(const double p, const double T) const;
     double getGasViscosity(const double p, const double T) const;
     double getLiquidViscosity(const double p, const double T) const;
-    double getGasDensityDerivative(double const p, double const T) const;
     double getNonwetRelativePermeability(
         const double t, const ParameterLib::SpatialPosition& pos,
         const double p, const double T, const double saturation) const;
diff --git a/MathLib/LinAlg/Eigen/EigenMatrix.h b/MathLib/LinAlg/Eigen/EigenMatrix.h
index faa4e8af93ec9b2cf98f330a51c75b2b49cf039a..6237fc4977d18d1307ffdc4427727d0e60c16782 100644
--- a/MathLib/LinAlg/Eigen/EigenMatrix.h
+++ b/MathLib/LinAlg/Eigen/EigenMatrix.h
@@ -129,23 +129,6 @@ public:
         return _mat.coeff(row, col);
     }
 
-    // TODO This method is currently used nowhere.
-    //      I disabled it in order to simplify the interface of this class,
-    //      especially since our other matrix classes lack this operator.
-    /*
-    /// get value. This function returns zero if the element doesn't exist.
-    double operator() (IndexType row, IndexType col) const
-    {
-        return get(row, col);
-    }
-    */
-
-    /// get a maximum value in diagonal entries
-    double getMaxDiagCoeff() const
-    {
-        return _mat.diagonal().maxCoeff();
-    }
-
     /// return always true, i.e. the matrix is always ready for use
     bool isAssembled() const { return true; }
 
diff --git a/MathLib/LinAlg/Lis/LisMatrix.cpp b/MathLib/LinAlg/Lis/LisMatrix.cpp
index 043ebf36e9cacdeb68baab67649e22c27b5d3350..b44d44d76a6c25a2806e351085f93bddecf58fb7 100644
--- a/MathLib/LinAlg/Lis/LisMatrix.cpp
+++ b/MathLib/LinAlg/Lis/LisMatrix.cpp
@@ -118,24 +118,6 @@ void LisMatrix::write(const std::string &filename) const
     lis_output_matrix(_AA, LIS_FMT_MM, const_cast<char*>(filename.c_str()));
 }
 
-double LisMatrix::getMaxDiagCoeff()
-{
-    double abs_max_entry;
-    int ierr = lis_vector_get_value(_diag, 0, &abs_max_entry);
-    checkLisError(ierr);
-    abs_max_entry = std::abs(abs_max_entry);
-    for (std::size_t k(1); k<_n_rows; ++k) {
-        double tmp;
-        ierr = lis_vector_get_value(_diag, k, &tmp);
-        checkLisError(ierr);
-        if (abs_max_entry < std::abs(tmp)) {
-            abs_max_entry = std::abs(tmp);
-        }
-    }
-
-    return abs_max_entry;
-}
-
 bool finalizeMatrixAssembly(LisMatrix &mat)
 {
     LIS_MATRIX &A = mat.getRawMatrix();
diff --git a/MathLib/LinAlg/Lis/LisMatrix.h b/MathLib/LinAlg/Lis/LisMatrix.h
index a23a06404c7600bc358e74d2ebe334f7239e9a3f..163a9b714fd0bb1379852f932c341925b10a753b 100644
--- a/MathLib/LinAlg/Lis/LisMatrix.h
+++ b/MathLib/LinAlg/Lis/LisMatrix.h
@@ -111,9 +111,6 @@ public:
     /// printout this equation for debugging
     void write(const std::string &filename) const;
 
-    /// get a maximum value in diagonal entries
-    double getMaxDiagCoeff();
-
     /// return a raw Lis matrix object
     LIS_MATRIX& getRawMatrix() { return _AA; }
 
diff --git a/MeshGeoToolsLib/MeshNodesAlongPolyline.cpp b/MeshGeoToolsLib/MeshNodesAlongPolyline.cpp
index 2611ad887a6751cd8751f590bb902dc3d00f7ffd..22418914a38a47bbf8f0fac47f7dbe3320808b12 100644
--- a/MeshGeoToolsLib/MeshNodesAlongPolyline.cpp
+++ b/MeshGeoToolsLib/MeshNodesAlongPolyline.cpp
@@ -61,9 +61,4 @@ GeoLib::Polyline const& MeshNodesAlongPolyline::getPolyline () const
 {
     return _ply;
 }
-
-std::vector<double> const& MeshNodesAlongPolyline::getDistOfProjNodeFromPlyStart() const
-{
-    return _dist_of_proj_node_from_ply_start;
-}
-} // end namespace MeshGeoToolsLib
+}  // end namespace MeshGeoToolsLib
diff --git a/MeshGeoToolsLib/MeshNodesAlongPolyline.h b/MeshGeoToolsLib/MeshNodesAlongPolyline.h
index d94baaaa6bbaf5e7a078e7a903f89f2f5b1c12d3..ae08c15bd54e7267b90d331ba5a0cb12dc2a911c 100644
--- a/MeshGeoToolsLib/MeshNodesAlongPolyline.h
+++ b/MeshGeoToolsLib/MeshNodesAlongPolyline.h
@@ -68,10 +68,6 @@ public:
      */
     GeoLib::Polyline const& getPolyline () const;
 
-    /// return a vector of node distance from the polyline start. The vector
-    /// corresponds to a vector returned in getNodeIDs()
-    std::vector<double> const & getDistOfProjNodeFromPlyStart() const;
-
 private:
     MeshLib::Mesh const& _mesh;
     GeoLib::Polyline const& _ply;
diff --git a/MeshLib/ElementStatus.cpp b/MeshLib/ElementStatus.cpp
index d04c81e315a48acf4443460663039b08ea1ab994..c0c69fe323395404aa905618331126118c21c4e6 100644
--- a/MeshLib/ElementStatus.cpp
+++ b/MeshLib/ElementStatus.cpp
@@ -98,25 +98,6 @@ std::vector<MeshLib::Node*> const& ElementStatus::getActiveNodes() const
     return _mesh->getNodes();
 }
 
-std::vector<MeshLib::Element*> ElementStatus::getActiveElementsAtNode(std::size_t node_id) const
-{
-    const std::size_t nActiveElements (_active_nodes[node_id]);
-    std::vector<MeshLib::Element*> active_elements;
-    active_elements.reserve(nActiveElements);
-    for (auto elem : _mesh->getNode(node_id)->getElements())
-    {
-        if (active_elements.size() == nActiveElements)
-        {
-            return active_elements;
-        }
-        if (_element_status[elem->getID()])
-        {
-            active_elements.push_back(elem);
-        }
-    }
-    return active_elements;
-}
-
 std::size_t ElementStatus::getNumberOfActiveNodes() const
 {
     return _active_nodes.size() - std::count(_active_nodes.cbegin(), _active_nodes.cend(), 0);
diff --git a/MeshLib/ElementStatus.h b/MeshLib/ElementStatus.h
index 9bab3fb711e7de8f4cca974b7e898e5d63303f2f..e7d8b76aea9eea5ad29edc41183d236d39b55c76 100644
--- a/MeshLib/ElementStatus.h
+++ b/MeshLib/ElementStatus.h
@@ -45,9 +45,6 @@ public:
     /// Returns the status of the given node
     bool isActiveNode(MeshLib::Node const* node) const;
 
-    /// Returns a vector of active elements connected to a node
-    std::vector<MeshLib::Element*> getActiveElementsAtNode(std::size_t node_id) const;
-
     /// Returns the total number of active nodes
     std::size_t getNumberOfActiveNodes() const;
 
diff --git a/MeshLib/Mesh.cpp b/MeshLib/Mesh.cpp
index 01167a0b30be55ac14739cf3306b2e12e825849d..19a54a8b08bf55f58b9b0c3713cc7672e2bc573f 100644
--- a/MeshLib/Mesh.cpp
+++ b/MeshLib/Mesh.cpp
@@ -60,7 +60,6 @@ Mesh::Mesh(std::string name,
     }
     this->setDimension();
     this->setElementsConnectedToNodes();
-    //this->setNodesConnectedByEdges();
     this->setNodesConnectedByElements();
     this->setElementNeighbors();
 
@@ -99,7 +98,6 @@ Mesh::Mesh(const Mesh &mesh)
         this->setDimension();
     }
     this->setElementsConnectedToNodes();
-    //this->setNodesConnectedByEdges();
     //this->setNodesConnectedByElements();
     this->setElementNeighbors();
 }
@@ -119,11 +117,6 @@ Mesh::~Mesh()
     }
 }
 
-void Mesh::addNode(Node* node)
-{
-    _nodes.push_back(node);
-}
-
 void Mesh::addElement(Element* elem)
 {
     _elements.push_back(elem);
@@ -191,18 +184,6 @@ void Mesh::setElementsConnectedToNodes()
     }
 }
 
-void Mesh::resetElementsConnectedToNodes()
-{
-    for (auto& node : _nodes)
-    {
-        if (node)
-        {
-            node->clearElements();
-        }
-    }
-    this->setElementsConnectedToNodes();
-}
-
 void Mesh::calcEdgeLengthRange()
 {
     this->_edge_length.first  = std::numeric_limits<double>::max();
@@ -247,80 +228,6 @@ void Mesh::setElementNeighbors()
     }
 }
 
-void Mesh::setNodesConnectedByEdges()
-{
-    const std::size_t nNodes (this->_nodes.size());
-    for (unsigned i=0; i<nNodes; ++i)
-    {
-        MeshLib::Node* node (_nodes[i]);
-        std::vector<MeshLib::Node*> conn_set;
-        const std::vector<MeshLib::Element*> &conn_elems (node->getElements());
-        const std::size_t nConnElems (conn_elems.size());
-        for (unsigned j=0; j<nConnElems; ++j)
-        {
-            MeshLib::Element* conn_ele = conn_elems[j];
-            const unsigned idx (conn_ele->getNodeIDinElement(node));
-            const unsigned nElemNodes (conn_ele->getNumberOfBaseNodes());
-            for (unsigned k(0); k<nElemNodes; ++k)
-            {
-                MeshLib::Node const* node_k = conn_ele->getNode(k);
-                bool is_in_vector (false);
-                const std::size_t nConnNodes (conn_set.size());
-                for (unsigned l(0); l < nConnNodes; ++l)
-                {
-                    if (node_k == conn_set[l])
-                    {
-                        is_in_vector = true;
-                    }
-                }
-                if (is_in_vector)
-                {
-                    continue;
-                }
-
-                if (conn_ele->getNumberOfBaseNodes() == conn_ele->getNumberOfNodes())
-                {
-                    if (conn_ele->isEdge(idx, k))
-                    {
-                        conn_set.push_back(const_cast<MeshLib::Node*>(node_k));
-                    }
-                }
-                else
-                {
-                    for (unsigned l=0; l<conn_ele->getNumberOfEdges(); l++)
-                    {
-                        std::unique_ptr<Element const> edge(conn_ele->getEdge(l));
-                        unsigned match = 0;
-                        for (unsigned m=0; m<edge->getNumberOfBaseNodes(); m++)
-                        {
-                            auto edge_node = edge->getNode(m);
-                            if (edge_node == node || edge_node == node_k)
-                            {
-                                match++;
-                            }
-                        }
-                        if (match != 2)
-                        {
-                            continue;
-                        }
-                        conn_set.push_back(const_cast<MeshLib::Node*>(node_k));
-                        for (unsigned m = edge->getNumberOfBaseNodes();
-                             m < edge->getNumberOfNodes();
-                             m++)
-                        {
-                            conn_set.push_back(
-                                const_cast<MeshLib::Node*>(edge->getNode(m)));
-                        }
-                        break;
-                    }
-                }
-
-            }
-        }
-        node->setConnectedNodes(conn_set);
-    }
-}
-
 void Mesh::setNodesConnectedByElements()
 {
     // Allocate temporary space for adjacent nodes.
diff --git a/MeshLib/Mesh.h b/MeshLib/Mesh.h
index d602e3b67d9a7dab688b84a7c4caab784dcff042..8ceaa95cf620db66c2484cf7d2825c646fc04807 100644
--- a/MeshLib/Mesh.h
+++ b/MeshLib/Mesh.h
@@ -71,9 +71,6 @@ public:
     /// Destructor
     virtual ~Mesh();
 
-    /// Add a node to the mesh.
-    void addNode(Node* node);
-
     /// Add an element to the mesh.
     void addElement(Element* elem);
 
@@ -143,13 +140,6 @@ protected:
     /// Set the minimum and maximum length over the edges of the mesh.
     void calcEdgeLengthRange();
 
-    /**
-     * Resets the connected elements for the node vector, i.e. removes the old information and
-     * calls setElementsConnectedToNodes to set the new information.
-     * \attention This needs to be called if node neighbourhoods are reset.
-     */
-    void resetElementsConnectedToNodes();
-
     /// Sets the dimension of the mesh.
     void setDimension();
 
@@ -160,8 +150,6 @@ protected:
     /// Note: Using this implementation, an element e can only have neighbors that have the same dimensionality as e.
     void setElementNeighbors();
 
-    void setNodesConnectedByEdges();
-
     /// Computes the element-connectivity of nodes. Two nodes i and j are
     /// connected if they are shared by an element.
     void setNodesConnectedByElements();
diff --git a/MeshLib/MeshEditing/AddLayerToMesh.cpp b/MeshLib/MeshEditing/AddLayerToMesh.cpp
index 1e3431f52e83e90c0205db7dac933d5b5f4982ab..8ef2f24dad13c45977342291a7ece5e4c3382c31 100644
--- a/MeshLib/MeshEditing/AddLayerToMesh.cpp
+++ b/MeshLib/MeshEditing/AddLayerToMesh.cpp
@@ -90,13 +90,6 @@ MeshLib::Mesh* addTopLayerToMesh(MeshLib::Mesh const& mesh,
     return addLayerToMesh(mesh, thickness, name, true);
 }
 
-MeshLib::Mesh* addBottomLayerToMesh(MeshLib::Mesh const& mesh,
-    double thickness,
-    std::string const& name)
-{
-    return addLayerToMesh(mesh, thickness, name, false);
-}
-
 MeshLib::Mesh* addLayerToMesh(MeshLib::Mesh const& mesh, double thickness,
     std::string const& name,
     bool on_top)
diff --git a/MeshLib/MeshEditing/AddLayerToMesh.h b/MeshLib/MeshEditing/AddLayerToMesh.h
index 9ad1e6e61a6c0f03d5f2e5f1fc4f1738f0aad0ce..e9a9f56acc3494fb196668a7679981d12dac6bdf 100644
--- a/MeshLib/MeshEditing/AddLayerToMesh.h
+++ b/MeshLib/MeshEditing/AddLayerToMesh.h
@@ -29,11 +29,6 @@ MeshLib::Mesh* addTopLayerToMesh(MeshLib::Mesh const& mesh,
     double thickness,
     std::string const& name);
 
-/// Adds a layer at the bottom of the mesh
-MeshLib::Mesh* addBottomLayerToMesh(MeshLib::Mesh const& mesh,
-    double thickness,
-    std::string const& name);
-
 /// Adds a layer to the mesh. If on_top is true, the layer is added on top,
 /// if it is false, the layer is added at the bottom.
 MeshLib::Mesh* addLayerToMesh(MeshLib::Mesh const& mesh,
diff --git a/MeshLib/MeshEditing/MeshRevision.cpp b/MeshLib/MeshEditing/MeshRevision.cpp
index 27b128e914e9069903930e08849ab171275695fa..7e3fb000bf463aab53046a911dfcc36ecd8ff965 100644
--- a/MeshLib/MeshEditing/MeshRevision.cpp
+++ b/MeshLib/MeshEditing/MeshRevision.cpp
@@ -34,15 +34,6 @@ MeshRevision::MeshRevision(MeshLib::Mesh &mesh) :
     _mesh(mesh)
 {}
 
-
-MeshLib::Mesh* MeshRevision::collapseNodes(const std::string &new_mesh_name, double eps)
-{
-    std::vector<MeshLib::Node*> new_nodes (this->constructNewNodesArray(this->collapseNodeIndices(eps)));
-    std::vector<MeshLib::Element*> new_elements (MeshLib::copyElementVector(_mesh.getElements(), new_nodes));
-    this->resetNodeIDs();
-    return new MeshLib::Mesh(new_mesh_name, new_nodes, new_elements, _mesh.getProperties());
-}
-
 unsigned MeshRevision::getNumberOfCollapsableNodes(double eps) const
 {
     std::vector<std::size_t> id_map(this->collapseNodeIndices(eps));
@@ -141,69 +132,6 @@ MeshLib::Mesh* MeshRevision::simplifyMesh(const std::string &new_mesh_name,
     return nullptr;
 }
 
-MeshLib::Mesh* MeshRevision::subdivideMesh(const std::string &new_mesh_name) const
-{
-    if (this->_mesh.getNumberOfElements() == 0)
-    {
-        return nullptr;
-    }
-
-    // original data
-    std::vector<MeshLib::Element*> const& elements(this->_mesh.getElements());
-    MeshLib::Properties const& properties(_mesh.getProperties());
-    auto const* material_vec = properties.getPropertyVector<int>("MaterialIDs");
-
-    // data structures for the new mesh
-    std::vector<MeshLib::Node*> new_nodes = MeshLib::copyNodeVector(_mesh.getNodes());
-    std::vector<MeshLib::Element*> new_elements;
-    MeshLib::Properties new_properties;
-    PropertyVector<int>* new_material_vec = nullptr;
-    if (material_vec) {
-        new_material_vec = new_properties.createNewPropertyVector<int>(
-            "MaterialIDs", MeshItemType::Cell, 1
-        );
-    }
-
-    for (std::size_t k(0); k<elements.size(); ++k) {
-        MeshLib::Element const*const elem(elements[k]);
-        ElementErrorCode error_code(elem->validate());
-        if (error_code[ElementErrorFlag::NonCoplanar])
-        {
-            std::size_t const n_new_elements(
-                subdivideElement(elem, new_nodes, new_elements));
-            if (n_new_elements == 0)
-            {
-                ERR("Element %d has unknown element type.", k);
-                this->cleanUp(new_nodes, new_elements);
-                return nullptr;
-            }
-            // copy material values
-            if (!material_vec)
-            {
-                continue;
-            }
-            new_material_vec->insert(new_material_vec->end(), n_new_elements,
-                (*material_vec)[k]);
-        } else {
-            new_elements.push_back(MeshLib::copyElement(elem, new_nodes));
-            // copy material values
-            if (material_vec)
-            {
-                new_material_vec->push_back((*material_vec)[k]);
-            }
-        }
-    }
-
-    if (!new_elements.empty())
-    {
-        return new MeshLib::Mesh(new_mesh_name, new_nodes, new_elements,
-                                 new_properties);
-    }
-
-    this->cleanUp(new_nodes, new_elements);
-    return nullptr;
-}
-
 std::vector<std::size_t> MeshRevision::collapseNodeIndices(double eps) const
 {
     const std::vector<MeshLib::Node*> &nodes(_mesh.getNodes());
diff --git a/MeshLib/MeshEditing/MeshRevision.h b/MeshLib/MeshEditing/MeshRevision.h
index bab42221b54c2ab9b3614580ad10197208c83189..d4a17721390c40054fa22ffd4e6e2e332344b1cd 100644
--- a/MeshLib/MeshEditing/MeshRevision.h
+++ b/MeshLib/MeshEditing/MeshRevision.h
@@ -43,14 +43,6 @@ public:
 
     virtual ~MeshRevision() = default;
 
-    /**
-     * Collapsed all nodes with distance < eps but ignores elements
-     * (i.e. elements with collapsed nodes may result)
-     * This is implicitely called when calling simplifyMesh(), so it does not need to be
-     * called separately when using simplifyMesh().
-     */
-    MeshLib::Mesh* collapseNodes(const std::string &new_mesh_name, double eps);
-
     /// Returns the number of potentially collapsable nodes
     unsigned getNumberOfCollapsableNodes(double eps = std::numeric_limits<double>::epsilon()) const;
 
@@ -71,12 +63,6 @@ public:
     MeshLib::Mesh* simplifyMesh(const std::string& new_mesh_name, double eps,
                                 unsigned min_elem_dim = 1);
 
-    /**
-     * Create a new mesh where all elements with nonplanar faces are subdivided into simpler
-     * element types. This method does not collapse or remove any nodes.
-     */
-    MeshLib::Mesh* subdivideMesh(const std::string &new_mesh_name) const;
-
 private:
     /// Constructs a new node vector for the resulting mesh by removing all nodes whose ID indicates they need to be merged/removed.
     std::vector<MeshLib::Node*> constructNewNodesArray(
diff --git a/MeshLib/MeshGenerators/LayeredMeshGenerator.cpp b/MeshLib/MeshGenerators/LayeredMeshGenerator.cpp
index 7249f41044074285fc41b00b5d8e1a0f56926b02..c30200e17fd385a74496ed5150672f3ece4f6c7a 100644
--- a/MeshLib/MeshGenerators/LayeredMeshGenerator.cpp
+++ b/MeshLib/MeshGenerators/LayeredMeshGenerator.cpp
@@ -100,9 +100,3 @@ MeshLib::Node* LayeredMeshGenerator::getNewLayerNode(MeshLib::Node const& dem_no
 
     return new MeshLib::Node(dem_node[0], dem_node[1], elevation, new_node_id);
 }
-
-void LayeredMeshGenerator::cleanUpOnError()
-{
-    std::for_each(_nodes.begin(), _nodes.end(), [](MeshLib::Node *node) { delete node; });
-    std::for_each(_elements.begin(), _elements.end(), [](MeshLib::Element *elem) { delete elem; });
-}
diff --git a/MeshLib/MeshGenerators/LayeredMeshGenerator.h b/MeshLib/MeshGenerators/LayeredMeshGenerator.h
index ea59ec242d2f1b203c9e2ab19c26b63f16aa2edc..5e3fd438502af1f830c50fef4c64b57915c287cf 100644
--- a/MeshLib/MeshGenerators/LayeredMeshGenerator.h
+++ b/MeshLib/MeshGenerators/LayeredMeshGenerator.h
@@ -89,9 +89,6 @@ protected:
     /// Calculates a data-dependent epsilon value
     double calcEpsilon(GeoLib::Raster const& low, GeoLib::Raster const& high);
 
-    /// Cleans up the already created objects in case of an error
-    void cleanUpOnError();
-
     double _elevation_epsilon{0.0001};
     double _minimum_thickness{std::numeric_limits<float>::epsilon()};
     std::vector<int> _materials;
diff --git a/MeshLib/MeshQuality/ElementQualityMetric.cpp b/MeshLib/MeshQuality/ElementQualityMetric.cpp
index afa6d63adc7dcbe2ed88070521747f095176b445..eb5d34bea9510c0550ec173644b8e0158091a080 100644
--- a/MeshLib/MeshQuality/ElementQualityMetric.cpp
+++ b/MeshLib/MeshQuality/ElementQualityMetric.cpp
@@ -37,30 +37,8 @@ BaseLib::Histogram<double> ElementQualityMetric::getHistogram (std::size_t n_bin
     return BaseLib::Histogram<double>(getElementQuality(), n_bins, true);
 }
 
-void ElementQualityMetric::errorMsg (Element const& elem, std::size_t idx) const
-{
-    ERR ("Error in MeshQualityChecker::check() - Calculated value of element is below double precision minimum.");
-    ERR ("Points of %s-Element %d: ", MeshElemType2String(elem.getGeomType()).c_str(), idx);
-    for (std::size_t i(0); i < elem.getNumberOfBaseNodes(); i++)
-    {
-        const double* coords = elem.getNode(i)->getCoords();
-        ERR ("\t Node %d: (%f, %f, %f)", i, coords[0], coords[1], coords[2]);
-    }
-}
-
 std::vector<double> const& ElementQualityMetric::getElementQuality () const
 {
     return _element_quality_metric;
 }
-
-double ElementQualityMetric::getMinValue() const
-{
-    return _min;
-}
-
-double ElementQualityMetric::getMaxValue() const
-{
-    return _max;
-}
-
-} // end namespace MeshLib
+}  // namespace MeshLib
diff --git a/MeshLib/MeshQuality/ElementQualityMetric.h b/MeshLib/MeshQuality/ElementQualityMetric.h
index f5c1d0111a720cc0e200c8dd94bcf3f6303a6cc4..9d2480f98f97100e9a8d1468e4d342a6606a913f 100644
--- a/MeshLib/MeshQuality/ElementQualityMetric.h
+++ b/MeshLib/MeshQuality/ElementQualityMetric.h
@@ -42,19 +42,11 @@ public:
     /// Returns the result vector
     std::vector<double> const& getElementQuality () const;
 
-    /// Returns the minimum calculated value
-    double getMinValue() const;
-
-    /// Returns the maximum calculated value
-    double getMaxValue() const;
-
     /// Returns a histogram of the quality vector separated into the given number of bins.
     /// If no number of bins is specified, one will be calculated based on the Sturges criterium.
     virtual BaseLib::Histogram<double> getHistogram (std::size_t n_bins = 0) const;
 
 protected:
-    void errorMsg (Element const& elem, std::size_t idx) const;
-
     double _min;
     double _max;
     Mesh const& _mesh;
diff --git a/MeshLib/MeshSearch/MeshElementGrid.cpp b/MeshLib/MeshSearch/MeshElementGrid.cpp
index 82af7c5aa03853df5a1974d1283038aa6a028a15..f225a174d894faa54db102d8596e99cdb79232d6 100644
--- a/MeshLib/MeshSearch/MeshElementGrid.cpp
+++ b/MeshLib/MeshSearch/MeshElementGrid.cpp
@@ -202,91 +202,4 @@ MeshElementGrid::getGridCellCoordinates(MathLib::Point3d const& p) const
 
     return std::make_pair(valid, coords);
 }
-
-#ifndef NDEBUG
-void getGridGeometry(MeshElementGrid const& grid,
-                     GeoLib::GEOObjects& geometries,
-                     std::string& geometry_name)
-{
-    std::vector<std::string> cell_names;
-
-    auto addPoints = [&geometries](
-        MathLib::Point3d const& p, std::array<double, 3> const& d,
-        std::array<std::size_t, 3> const& c, std::string& name) {
-        auto pnts = std::make_unique<std::vector<GeoLib::Point*>>();
-        pnts->push_back(new GeoLib::Point(p[0]+c[0]*d[0], p[1]+c[1]*d[1], p[2]+c[2]*d[2]));
-        pnts->push_back(new GeoLib::Point(p[0]+c[0]*d[0], p[1]+(c[1]+1)*d[1], p[2]+c[2]*d[2]));
-        pnts->push_back(new GeoLib::Point(p[0]+(c[0]+1)*d[0], p[1]+(c[1]+1)*d[1], p[2]+c[2]*d[2]));
-        pnts->push_back(new GeoLib::Point(p[0]+(c[0]+1)*d[0], p[1]+c[1]*d[1], p[2]+c[2]*d[2]));
-        pnts->push_back(new GeoLib::Point(p[0]+c[0]*d[0], p[1]+c[1]*d[1], p[2]+(c[2]+1)*d[2]));
-        pnts->push_back(new GeoLib::Point(p[0]+c[0]*d[0], p[1]+(c[1]+1)*d[1], p[2]+(c[2]+1)*d[2]));
-        pnts->push_back(new GeoLib::Point(p[0]+(c[0]+1)*d[0], p[1]+(c[1]+1)*d[1], p[2]+(c[2]+1)*d[2]));
-        pnts->push_back(new GeoLib::Point(p[0]+(c[0]+1)*d[0], p[1]+c[1]*d[1], p[2]+(c[2]+1)*d[2]));
-        std::array<double,3> ulps; // unit in the last place
-        double const towards(std::numeric_limits<double>::max());
-        ulps[0] = std::nextafter(d[0], towards)-d[0];
-        ulps[1] = std::nextafter(d[1], towards)-d[1];
-        ulps[2] = std::nextafter(d[2], towards)-d[2];
-        double const tolerance(std::min(std::min(ulps[0], ulps[1]), ulps[2]));
-        geometries.addPointVec(std::move(pnts), name, nullptr, tolerance);
-    };
-
-    for (std::size_t i(0); i<grid._n_steps[0]; ++i) {
-        for (std::size_t j(0); j<grid._n_steps[1]; ++j) {
-            for (std::size_t k(0); k<grid._n_steps[2]; ++k) {
-                cell_names.emplace_back("Grid-"+std::to_string(i)+"-"
-                    +std::to_string(j)+"-"+std::to_string(k));
-                addPoints(grid._aabb.getMinPoint(), grid._step_sizes,
-                          {{i, j, k}}, cell_names.back());
-                auto plys = std::make_unique<std::vector<GeoLib::Polyline*>>();
-                auto & points = *geometries.getPointVec(cell_names.back());
-
-                auto* ply_bottom(new GeoLib::Polyline(points));
-                for (std::size_t l(0); l < 4; ++l)
-                {
-                    ply_bottom->addPoint(l);
-                }
-                ply_bottom->addPoint(0); // close to bottom surface
-                plys->push_back(ply_bottom);
-
-                auto* ply_top(new GeoLib::Polyline(points));
-                for (std::size_t l(4); l < 8; ++l)
-                {
-                    ply_top->addPoint(l);
-                }
-                ply_top->addPoint(4); // close to top surface
-                plys->push_back(ply_top);
-
-                auto* ply_04(new GeoLib::Polyline(points));
-                ply_04->addPoint(0);
-                ply_04->addPoint(4);
-                plys->push_back(ply_04);
-
-                auto* ply_15(new GeoLib::Polyline(points));
-                ply_15->addPoint(1);
-                ply_15->addPoint(5);
-                plys->push_back(ply_15);
-
-                auto* ply_26(new GeoLib::Polyline(points));
-                ply_26->addPoint(2);
-                ply_26->addPoint(6);
-                plys->push_back(ply_26);
-
-                auto* ply_37(new GeoLib::Polyline(points));
-                ply_37->addPoint(3);
-                ply_37->addPoint(7);
-                plys->push_back(ply_37);
-
-                geometries.addPolylineVec(std::move(plys), cell_names.back(),
-                    nullptr);
-            }
-        }
-    }
-    if (geometries.mergeGeometries(cell_names, geometry_name) == 2)
-    {
-        geometry_name = cell_names.front();
-    }
-}
-#endif // NDEBUG
-
-} // end namespace MeshLib
+}  // namespace MeshLib
diff --git a/MeshLib/MeshSearch/MeshElementGrid.h b/MeshLib/MeshSearch/MeshElementGrid.h
index dc00125d738ee2c4834716ae67c5ac1c1ceb2342..5887c4abc62e0821a7dafce4b8d6a3009d352a9c 100644
--- a/MeshLib/MeshSearch/MeshElementGrid.h
+++ b/MeshLib/MeshSearch/MeshElementGrid.h
@@ -34,11 +34,6 @@ class Element;
 /// @attention The user has to ensure the validity of the pointers while the
 /// MeshElementGrid instance lives.
 class MeshElementGrid final {
-#ifndef NDEBUG
-    friend void getGridGeometry(MeshLib::MeshElementGrid const& grid,
-                                GeoLib::GEOObjects& geometries,
-                                std::string& geometry_name);
-#endif
 public:
     /// Constructs a grid. Grid cells contains intersecting mesh elements.
     /// @param mesh the MeshLib::Mesh instance the grid will be constructed from
@@ -94,14 +89,4 @@ private:
     std::array<std::size_t,3> _n_steps;
     std::vector<std::vector<MeshLib::Element const*>> _elements_in_grid_box;
 };
-
-#ifndef NDEBUG
-/// Transfers the grid cells to a geometry. The grid-geometry can be viewed
-/// using the DataExplorer. The visualization can be used to explain the
-/// algorithm or to find bugs in the algorithm.
-void getGridGeometry(MeshLib::MeshElementGrid const& grid,
-                     GeoLib::GEOObjects& geometries,
-                     std::string& geometry_name);
-#endif
-
-} // end namespace MeshLib
+}  // namespace MeshLib
diff --git a/MeshLib/Node.h b/MeshLib/Node.h
index b3a0733ea39bf8db15edc09a8f7f4b5aa2b341dc..ccd519139c3a58d89b3dda8b36d0ce2d3175707e 100644
--- a/MeshLib/Node.h
+++ b/MeshLib/Node.h
@@ -90,8 +90,7 @@ protected:
     void clearElements() { _elements.clear(); }
 
     /// Resets the connected nodes of this node. The connected nodes are
-    /// generated by Mesh::setNodesConnectedByEdges() and
-    /// Mesh::setNodesConnectedByElements().
+    /// generated by Mesh::setNodesConnectedByElements().
     void setConnectedNodes(std::vector<Node*> &connected_nodes)
     {
         _connected_nodes = connected_nodes;
diff --git a/MeshLib/VtkOGSEnum.cpp b/MeshLib/VtkOGSEnum.cpp
index b325f10302aee6c5def94f3e7fb65ad19308227b..adb03cb5faaa52c278953ccfa6682e6385284a12 100644
--- a/MeshLib/VtkOGSEnum.cpp
+++ b/MeshLib/VtkOGSEnum.cpp
@@ -14,52 +14,6 @@
 
 #include <vtkCellType.h>
 
-MeshLib::CellType VtkCellTypeToOGS(int type)
-{
-    switch (type)
-    {
-        case VTK_LINE:
-            return MeshLib::CellType::LINE2;
-        case VTK_QUADRATIC_EDGE:
-            return MeshLib::CellType::LINE3;
-        case VTK_TRIANGLE:
-            return MeshLib::CellType::TRI3;
-        case VTK_QUADRATIC_TRIANGLE:
-            return MeshLib::CellType::TRI6;
-        case VTK_QUAD:
-            return MeshLib::CellType::QUAD4;
-        case VTK_QUADRATIC_QUAD:
-            return MeshLib::CellType::QUAD8;
-        case VTK_BIQUADRATIC_QUAD:
-            return MeshLib::CellType::QUAD9;
-        case VTK_HEXAHEDRON:
-            return MeshLib::CellType::HEX8;
-        case VTK_QUADRATIC_HEXAHEDRON:
-            return MeshLib::CellType::HEX20;
-        case VTK_TRIQUADRATIC_HEXAHEDRON:
-            return MeshLib::CellType::HEX27;
-        case VTK_TETRA:
-            return MeshLib::CellType::TET4;
-        case VTK_QUADRATIC_TETRA:
-            return MeshLib::CellType::TET10;
-        case VTK_WEDGE:
-            return MeshLib::CellType::PRISM6;
-        case VTK_QUADRATIC_WEDGE:
-            return MeshLib::CellType::PRISM15;
-        case VTK_BIQUADRATIC_QUADRATIC_WEDGE:
-            return MeshLib::CellType::PRISM18;
-        case VTK_PYRAMID:
-            return MeshLib::CellType::PYRAMID5;
-        case VTK_QUADRATIC_PYRAMID:
-            return MeshLib::CellType::PYRAMID13;
-        default:
-            OGS_FATAL(
-                "Unknown cell type in conversion from VTK to OGS. Given cell "
-                "type value is %d.",
-                type);
-    }
-}
-
 int OGSToVtkCellType(MeshLib::CellType ogs)
 {
     switch (ogs)
diff --git a/MeshLib/VtkOGSEnum.h b/MeshLib/VtkOGSEnum.h
index b0a2fc7e70a3a5503c5ccb596dc7c3ad5a23374b..7cb50a370c081d27854824ad0956d884dc091192 100644
--- a/MeshLib/VtkOGSEnum.h
+++ b/MeshLib/VtkOGSEnum.h
@@ -12,6 +12,4 @@
 
 #include "MeshEnums.h"
 
-MeshLib::CellType VtkCellTypeToOGS(int type);
-
 int OGSToVtkCellType(MeshLib::CellType ogs);
diff --git a/ProcessLib/TwoPhaseFlowWithPrho/TwoPhaseFlowWithPrhoMaterialProperties.cpp b/ProcessLib/TwoPhaseFlowWithPrho/TwoPhaseFlowWithPrhoMaterialProperties.cpp
index a0d7db9596dbaf6e06673eaeb7401c0381c7dbfe..2a4ae2113db9c31b75afc50983e9b43e8918f2fa 100644
--- a/ProcessLib/TwoPhaseFlowWithPrho/TwoPhaseFlowWithPrhoMaterialProperties.cpp
+++ b/ProcessLib/TwoPhaseFlowWithPrho/TwoPhaseFlowWithPrhoMaterialProperties.cpp
@@ -98,16 +98,6 @@ double TwoPhaseFlowWithPrhoMaterialProperties::getGasDensity(
     return _gas_density->getValue(vars);
 }
 
-double TwoPhaseFlowWithPrhoMaterialProperties::getDerivGasDensity(
-    const double p, const double T) const
-{
-    ArrayType vars;
-    vars[static_cast<int>(MaterialLib::Fluid::PropertyVariableType::T)] = T;
-    vars[static_cast<int>(MaterialLib::Fluid::PropertyVariableType::p)] = p;
-
-    return _gas_density->getdValue(vars,
-                                   MaterialLib::Fluid::PropertyVariableType::p);
-}
 double TwoPhaseFlowWithPrhoMaterialProperties::getLiquidViscosity(
     const double p, const double T) const
 {
diff --git a/ProcessLib/TwoPhaseFlowWithPrho/TwoPhaseFlowWithPrhoMaterialProperties.h b/ProcessLib/TwoPhaseFlowWithPrho/TwoPhaseFlowWithPrhoMaterialProperties.h
index 13c4687ca07c97f1a1c8f45d036fd3bf0ff6963c..66a7cb9befa59c489a7e7408efca3a281ad601fc 100644
--- a/ProcessLib/TwoPhaseFlowWithPrho/TwoPhaseFlowWithPrhoMaterialProperties.h
+++ b/ProcessLib/TwoPhaseFlowWithPrho/TwoPhaseFlowWithPrhoMaterialProperties.h
@@ -89,7 +89,6 @@ public:
     double getGasDensity(const double p, const double T) const;
     double getGasViscosity(const double p, const double T) const;
     double getLiquidViscosity(const double p, const double T) const;
-    double getDerivGasDensity(double const p, double const T) const;
     bool computeConstitutiveRelation(
         double const t,
         ParameterLib::SpatialPosition const& x_position,