diff --git a/source/RobotAPI/components/ArViz/Coin/ElementVisualizer.cpp b/source/RobotAPI/components/ArViz/Coin/ElementVisualizer.cpp
index e2436920ed1c5fe526b7abb556d8a8e4e1605e1f..e04d149a3eed50980d1a0d72011fa43a274d6001 100644
--- a/source/RobotAPI/components/ArViz/Coin/ElementVisualizer.cpp
+++ b/source/RobotAPI/components/ArViz/Coin/ElementVisualizer.cpp
@@ -6,6 +6,10 @@
 
 #include <VirtualRobot/Visualization/CoinVisualization/CoinVisualizationFactory.h>
 
+#include <Inventor/nodes/SoUnits.h>
+#include <Inventor/nodes/SoTransform.h>
+#include <Inventor/nodes/SoMaterial.h>
+
 namespace armarx::viz::coin
 {
     ElementVisualization::ElementVisualization()
diff --git a/source/RobotAPI/components/ArViz/Coin/ElementVisualizer.h b/source/RobotAPI/components/ArViz/Coin/ElementVisualizer.h
index 9be0fa5b5c44d5256ae0adb4cc0c6a74d5dfe619..af58bde80e165d9ccded34548f2d57a58bab5f70 100644
--- a/source/RobotAPI/components/ArViz/Coin/ElementVisualizer.h
+++ b/source/RobotAPI/components/ArViz/Coin/ElementVisualizer.h
@@ -1,19 +1,20 @@
 #pragma once
 
-#include <Inventor/nodes/SoMaterial.h>
+#include <RobotAPI/interface/ArViz/Elements.h>
+
 #include <Inventor/nodes/SoSeparator.h>
-#include <Inventor/nodes/SoUnits.h>
-#include <Inventor/nodes/SoTransform.h>
 
 #include <memory>
 
-#include <RobotAPI/interface/ArViz/Elements.h>
-
 namespace armarx::viz::data
 {
     class Element;
 }
 
+class SoUnits;
+class SoTransform;
+class SoMaterial;
+
 namespace armarx::viz::coin
 {
     struct ElementVisualization
diff --git a/source/RobotAPI/components/ArViz/Coin/VisualizationCylindroid.h b/source/RobotAPI/components/ArViz/Coin/VisualizationCylindroid.h
index 06e58d26a4c1119598bd73ce90e61dfa735f12b7..478f99c019e82321a860f7b6a4be18454f97064a 100644
--- a/source/RobotAPI/components/ArViz/Coin/VisualizationCylindroid.h
+++ b/source/RobotAPI/components/ArViz/Coin/VisualizationCylindroid.h
@@ -7,6 +7,8 @@
 #include <VirtualRobot/Visualization/CoinVisualization/CoinVisualizationFactory.h>
 #include <VirtualRobot/Visualization/CoinVisualization/CoinVisualizationNode.h>
 
+#include <Inventor/nodes/SoUnits.h>
+
 namespace armarx::viz::coin
 {
     struct VisualizationCylindroid : TypedElementVisualization<SoSeparator>
diff --git a/source/RobotAPI/components/ArViz/Coin/VisualizationPath.cpp b/source/RobotAPI/components/ArViz/Coin/VisualizationPath.cpp
index a0190abd75a8438a2371c728a580837d68c3eecc..84c7b3a30512d5c0a93339d1f602c524fd613a38 100644
--- a/source/RobotAPI/components/ArViz/Coin/VisualizationPath.cpp
+++ b/source/RobotAPI/components/ArViz/Coin/VisualizationPath.cpp
@@ -7,6 +7,7 @@
 #include <Inventor/nodes/SoDrawStyle.h>
 #include <Inventor/nodes/SoLineSet.h>
 #include <Inventor/nodes/SoPointSet.h>
+#include <Inventor/nodes/SoMaterial.h>
 
 namespace armarx::viz::coin
 {
@@ -94,4 +95,4 @@ namespace armarx::viz::coin
 
         return true;
     }
-} // namespace armarx::viz::coin
\ No newline at end of file
+} // namespace armarx::viz::coin
diff --git a/source/RobotAPI/components/ArViz/Coin/Visualizer.cpp b/source/RobotAPI/components/ArViz/Coin/Visualizer.cpp
index e25405e6ad5168eadd59650471b5e5b2a9e6c610..c76af807a1c9457e205de2dbf95d5540f89dfeac 100644
--- a/source/RobotAPI/components/ArViz/Coin/Visualizer.cpp
+++ b/source/RobotAPI/components/ArViz/Coin/Visualizer.cpp
@@ -1,23 +1,21 @@
 #include "Visualizer.h"
 
+#include "VisualizationRobot.h"
+#include "VisualizationObject.h"
+
 #include <ArmarXCore/core/logging/Logging.h>
 #include <ArmarXCore/util/CPPUtility/GetTypeString.h>
 
-#include <Inventor/sensors/SoTimerSensor.h>
-#include <Inventor/nodes/SoUnits.h>
-#include <QCoreApplication>
-#include <thread>
-
+#include <VirtualRobot/Visualization/CoinVisualization/CoinVisualizationFactory.h>
+#include <VirtualRobot/Visualization/VisualizationFactory.h>
 
+#include <Inventor/nodes/SoUnits.h>
 #include <Inventor/actions/SoWriteAction.h>
 #include <Inventor/actions/SoToVRML2Action.h>
 #include <Inventor/VRMLnodes/SoVRMLGroup.h>
-#include <Inventor/nodes/SoRotation.h>
-#include <VirtualRobot/Visualization/CoinVisualization/CoinVisualizationFactory.h>
-#include <VirtualRobot/Visualization/VisualizationFactory.h>
 
 
-#include "VisualizationRobot.h"
+#include <thread>
 
 namespace armarx::viz
 {
@@ -93,8 +91,12 @@ namespace armarx::viz
 
     CoinVisualizer::~CoinVisualizer()
     {
-        // We need to clear the caches while Coin is still initialized
+    }
+
+    void CoinVisualizer::clearCache()
+    {
         coin::clearRobotCache();
+        coin::clearObjectCache();
     }
 
 
@@ -120,14 +122,6 @@ namespace armarx::viz
         }
 
         state = CoinVisualizerState::STOPPED;
-        /*
-        state = CoinVisualizerState::STOPPING;
-        while (state != CoinVisualizerState::STOPPED)
-        {
-            QCoreApplication::processEvents();
-            usleep(1000);
-        }
-        */
     }
 
     CoinVisualizer_ApplyTiming CoinVisualizer::apply(data::LayerUpdate const& update)
diff --git a/source/RobotAPI/components/ArViz/Coin/Visualizer.h b/source/RobotAPI/components/ArViz/Coin/Visualizer.h
index 1494be07dc5615b787f2a50f12a48451b40e045a..195172e9c812c4fef9bd391853748592e113b5d8 100644
--- a/source/RobotAPI/components/ArViz/Coin/Visualizer.h
+++ b/source/RobotAPI/components/ArViz/Coin/Visualizer.h
@@ -191,6 +191,8 @@ namespace armarx::viz
 
         ~CoinVisualizer();
 
+        void clearCache();
+
         void registerVisualizationTypes();
 
         void startAsync(StorageInterfacePrx const& storage);
diff --git a/source/RobotAPI/gui-plugins/ArViz/ArVizWidgetController.cpp b/source/RobotAPI/gui-plugins/ArViz/ArVizWidgetController.cpp
index 4b34e9a3a6248223fadafcf4af4b54af9a069eaa..c3aad744b56229d4ae2f01b716e092abfa5f76f2 100644
--- a/source/RobotAPI/gui-plugins/ArViz/ArVizWidgetController.cpp
+++ b/source/RobotAPI/gui-plugins/ArViz/ArVizWidgetController.cpp
@@ -21,10 +21,7 @@
  */
 
 #include "ArVizWidgetController.h"
-#include <RobotAPI/components/ArViz/Coin/VisualizationObject.h>
-#include <RobotAPI/components/ArViz/Coin/VisualizationRobot.h>
 
-#include <ArmarXCore/core/ArmarXManager.h>
 #include <ArmarXCore/observers/variant/Variant.h>
 
 #include <SimoxUtility/algorithm/string/string_tools.h>
@@ -150,8 +147,7 @@ namespace armarx
 
     void ArVizWidgetController::onExitComponent()
     {
-        armarx::viz::coin::clearObjectCache();
-        armarx::viz::coin::clearRobotCache();
+        visualizer.clearCache();
     }
 
     void ArVizWidgetController::onConnectComponent()
diff --git a/source/RobotAPI/gui-plugins/ArViz/ArVizWidgetController.h b/source/RobotAPI/gui-plugins/ArViz/ArVizWidgetController.h
index 4a493dbd19a4c4cab6e05aa2a7ab5376936a3ebe..2dd295afccc97080bea8e7d4a7dc222324fb71d5 100644
--- a/source/RobotAPI/gui-plugins/ArViz/ArVizWidgetController.h
+++ b/source/RobotAPI/gui-plugins/ArViz/ArVizWidgetController.h
@@ -33,8 +33,6 @@
 #include <ArmarXCore/interface/observers/ObserverInterface.h>
 #include <ArmarXCore/core/system/ImportExportComponent.h>
 
-#include <Inventor/nodes/SoSeparator.h>
-
 #include "LayerInfoTree.h"