diff --git a/Collision/SurfaceTree.hpp b/Collision/SurfaceTree.hpp
index 1bd3a8a5f7f2cd364f9d7d38fea10c4314cde483..6b3a5fe9b413f8183fef29b7fca3fc109904c6d8 100644
--- a/Collision/SurfaceTree.hpp
+++ b/Collision/SurfaceTree.hpp
@@ -378,7 +378,7 @@ void SurfaceTree<CellType>::translateRot()
 template<typename CellType>
 void SurfaceTree<CellType>::getIntersectingNodes(const std::shared_ptr<CellType> left,
         const std::shared_ptr<CellType> right,
-        std::vector<SurfaceTree<CellType>::CellPairType> &result)
+        std::vector<CellPairType> &result)
 {
     if(left->getAabb().intersection(right->getAabb()).isEmpty())
     {
diff --git a/External/Moller/moller.h b/External/Moller/moller.h
index 3778c7bc300103033306bb53247c007e11ed9ebb..96ca4ee80b261f8f5860a568605f1cc4a8f8db78 100644
--- a/External/Moller/moller.h
+++ b/External/Moller/moller.h
@@ -754,7 +754,7 @@ inline int tri_tri_intersect_with_isectline(double V0[3],double V1[3],double V2[
   double b,c,max;
   int smallest1,smallest2;
   //tansel
-  double temp;
+  double temp = 0.0;
    //end tansel
 
   /* compute plane equation of triangle(V0,V1,V2) */
diff --git a/IO/CMakeLists.txt b/IO/CMakeLists.txt
index b45266fca2294c515ad7253833bc126508783ae1..e5fe66c0271d4453e62373218090c5007daece0a 100644
--- a/IO/CMakeLists.txt
+++ b/IO/CMakeLists.txt
@@ -43,7 +43,7 @@ target_link_libraries(IO
     VegaFEM::volumetricMesh
     )
 
-target_compile_options(IO PRIVATE $<$<CXX_COMPILER_ID:GNU>:-Wno-sign-compare -Wno-narrowing>)
+target_compile_options(IO PRIVATE $<$<CXX_COMPILER_ID:GNU>:-Wno-sign-compare -Wno-narrowing -Wno-unused-result>)
 if(BUILD_TESTING)
   add_subdirectory(UnitTests)
 endif()
diff --git a/SceneModels/StaticSceneObject.h b/SceneModels/StaticSceneObject.h
index e4f60131858983bf5d9ea7851dde8976043221d8..a9a44cb28a24119cfad725de677d0b5accb5c30a 100644
--- a/SceneModels/StaticSceneObject.h
+++ b/SceneModels/StaticSceneObject.h
@@ -40,7 +40,7 @@ namespace core {
 ///     apply to them. They can be used to model objects that do not move in the scene or
 ///     or objects that are controlled by external hardware, i.e. haptics devices.
 ///
-class StaticSceneObject : public SceneObject, public OdeSystem
+class StaticSceneObject : public SceneObject
 {
 public:
     ///
diff --git a/TimeIntegrators/OdeSystem.h b/TimeIntegrators/OdeSystem.h
index b294a69ae4736af7b7cecd43866812ec6e419814..aa959ac67bb90ec8910ed9ebb972d5d488365001 100644
--- a/TimeIntegrators/OdeSystem.h
+++ b/TimeIntegrators/OdeSystem.h
@@ -40,7 +40,7 @@ public:
 
 public:
     OdeSystem();
-    ~OdeSystem() = default;
+    virtual ~OdeSystem() = default;
 
     ///
     /// \brief Set the derivative with respect to v of the right hand side.
diff --git a/VTKRendering/VTKViewer.cpp b/VTKRendering/VTKViewer.cpp
index 0edb10672640fd52b79253c7376b426c899389b0..119ee8824935bb041ceb56981dd2307a60ba3c86 100644
--- a/VTKRendering/VTKViewer.cpp
+++ b/VTKRendering/VTKViewer.cpp
@@ -93,7 +93,7 @@ public:
     ///
     /// \brief Set the render window
     ///
-    void *setRenderWindow(vtkSmartPointer<vtkRenderWindow> renWin)
+    void setRenderWindow(vtkSmartPointer<vtkRenderWindow> renWin)
     {
         this->renderWindow = renWin;
         if(this->renderWindow->GetInteractor())