diff --git a/opossum/examples/ghost_focus.rs b/opossum/examples/ghost_focus.rs
index 338a11020e49ed32f7f5a684c42a4fb7ee36dae3..e210173197ce03d2c847130763698d5ff9e2ec6e 100644
--- a/opossum/examples/ghost_focus.rs
+++ b/opossum/examples/ghost_focus.rs
@@ -4,10 +4,7 @@ use opossum::{
     degree,
     error::OpmResult,
     joule, millimeter,
-    nodes::{
-        collimated_line_ray_source, round_collimated_ray_source, Lens, NodeGroup, SpotDiagram,
-        Wedge,
-    },
+    nodes::{round_collimated_ray_source, Lens, NodeGroup, SpotDiagram, Wedge},
     optic_node::{Alignable, OpticNode},
     optic_ports::PortType,
     refractive_index::RefrIndexConst,
@@ -19,7 +16,7 @@ fn main() -> OpmResult<()> {
     let mut scenery = NodeGroup::default();
     let i_src = scenery.add_node(
         // collimated_line_ray_source(millimeter!(50.), joule!(1.), 3)?
-        round_collimated_ray_source(millimeter!(50.0), joule!(1.0), 1)?,
+        round_collimated_ray_source(millimeter!(50.0), joule!(1.0), 5)?,
     )?;
     let i_sd = scenery.add_node(SpotDiagram::default())?;
 
@@ -44,21 +41,21 @@ fn main() -> OpmResult<()> {
         degree!(10.0),
         &RefrIndexConst::new(1.5)?,
     )?
-    .with_tilt(degree!(0.0, 0.0, 0.0))?;
-    wedge.set_coating(&PortType::Input, "front", &CoatingType::Fresnel)?;
+    .with_tilt(degree!(5.0, 0.0, 0.0))?;
     wedge.set_coating(&PortType::Input, "front", &CoatingType::Fresnel)?;
+    wedge.set_coating(&PortType::Output, "rear", &CoatingType::Fresnel)?;
     let i_w = scenery.add_node(wedge)?;
 
     let i_sd2 = scenery.add_node(SpotDiagram::default())?;
     scenery.connect_nodes(i_src, "out1", i_sd, "in1", millimeter!(20.0))?;
-    scenery.connect_nodes(i_sd, "out1", i_w, "front", millimeter!(80.0))?;
-    // scenery.connect_nodes(i_sd, "out1", i_l, "front", millimeter!(80.0))?;
+    // scenery.connect_nodes(i_sd, "out1", i_w, "front", millimeter!(80.0))?;
+    scenery.connect_nodes(i_sd, "out1", i_l, "front", millimeter!(80.0))?;
     // scenery.connect_nodes(i_l, "rear", i_w, "front", millimeter!(70.0))?;
-    scenery.connect_nodes(i_w, "rear", i_sd2, "in1", millimeter!(70.0))?;
+    scenery.connect_nodes(i_l, "rear", i_sd2, "in1", millimeter!(70.0))?;
 
     let mut doc = OpmDocument::new(scenery);
     let mut config = GhostFocusConfig::default();
-    config.set_max_bounces(1);
+    config.set_max_bounces(2);
     doc.add_analyzer(AnalyzerType::GhostFocus(config));
     doc.save_to_file(Path::new("./opossum/playground/ghost_focus.opm"))
 }
diff --git a/opossum/src/nodes/cylindric_lens/mod.rs b/opossum/src/nodes/cylindric_lens/mod.rs
index 5d4157cec693f31b09ee1ce33fa35cc407013aaa..e4480ca4bd1a4a0a2e7ec9a0f18af7a11255f751 100644
--- a/opossum/src/nodes/cylindric_lens/mod.rs
+++ b/opossum/src/nodes/cylindric_lens/mod.rs
@@ -289,10 +289,13 @@ impl OpticNode for CylindricLens {
     fn reset_data(&mut self) {
         self.front_surf.set_backwards_rays_cache(Rays::default());
         self.front_surf.set_forward_rays_cache(Rays::default());
+        self.front_surf.reset_hit_map();
 
         self.rear_surf.set_backwards_rays_cache(Rays::default());
         self.rear_surf.set_forward_rays_cache(Rays::default());
+        self.rear_surf.reset_hit_map();
     }
+
     fn hit_maps(&self) -> HashMap<String, HitMap> {
         let mut map: HashMap<String, HitMap> = HashMap::default();
         map.insert("front".to_string(), self.front_surf.hit_map().to_owned());
diff --git a/opossum/src/nodes/detector.rs b/opossum/src/nodes/detector.rs
index 7f4579546e61625a092a620f2240a2f52b98ffa1..49a90f28fabb0060935a1ab5fce9f79719402730 100644
--- a/opossum/src/nodes/detector.rs
+++ b/opossum/src/nodes/detector.rs
@@ -76,6 +76,8 @@ impl OpticNode for Detector {
     }
     fn reset_data(&mut self) {
         self.light_data = None;
+        todo!();
+        // self.surface.reset_hit_map();
     }
 }
 
diff --git a/opossum/src/nodes/energy_meter.rs b/opossum/src/nodes/energy_meter.rs
index 29d3a498ae9150a95d7424aacc22a21970a82df2..e7cfa5fd8dd7ae485ba2eaa2aba940f7f6c94a67 100644
--- a/opossum/src/nodes/energy_meter.rs
+++ b/opossum/src/nodes/energy_meter.rs
@@ -183,6 +183,8 @@ impl OpticNode for EnergyMeter {
     }
     fn reset_data(&mut self) {
         self.light_data = None;
+        todo!();
+        // self.surface.reset_hit_map();
     }
 }
 
diff --git a/opossum/src/nodes/fluence_detector.rs b/opossum/src/nodes/fluence_detector.rs
index 9de6d6e8cdecd59fa2d3475a125c1019690efae9..ecfaa6977b33fd14190fc8722136f9c6963cbe5c 100644
--- a/opossum/src/nodes/fluence_detector.rs
+++ b/opossum/src/nodes/fluence_detector.rs
@@ -159,6 +159,8 @@ impl OpticNode for FluenceDetector {
     }
     fn reset_data(&mut self) {
         self.light_data = None;
+        todo!();
+        // self.surface.reset_hit_map();
     }
 }
 
diff --git a/opossum/src/nodes/lens/mod.rs b/opossum/src/nodes/lens/mod.rs
index 899a075975b27409f1ed98e0005ee5168e8d9371..f709f0d286e1d1def8e4c9ad1779078b679898f4 100644
--- a/opossum/src/nodes/lens/mod.rs
+++ b/opossum/src/nodes/lens/mod.rs
@@ -374,9 +374,11 @@ impl OpticNode for Lens {
     fn reset_data(&mut self) {
         self.front_surf.set_backwards_rays_cache(Rays::default());
         self.front_surf.set_forward_rays_cache(Rays::default());
+        self.front_surf.reset_hit_map();
 
         self.rear_surf.set_backwards_rays_cache(Rays::default());
         self.rear_surf.set_forward_rays_cache(Rays::default());
+        self.rear_surf.reset_hit_map();
     }
     fn hit_maps(&self) -> HashMap<String, HitMap> {
         let mut map: HashMap<String, HitMap> = HashMap::default();
diff --git a/opossum/src/nodes/ray_propagation_visualizer.rs b/opossum/src/nodes/ray_propagation_visualizer.rs
index 2aaa6296aab4d12e28bcfacee341bdb1b4b38814..522cb92fecf228c87be3b271c926c4c56acee230 100644
--- a/opossum/src/nodes/ray_propagation_visualizer.rs
+++ b/opossum/src/nodes/ray_propagation_visualizer.rs
@@ -156,6 +156,9 @@ impl OpticNode for RayPropagationVisualizer {
     }
     fn reset_data(&mut self) {
         self.light_data = None;
+        todo!();
+
+        // self.surface.reset_hit_map();
     }
 }
 
diff --git a/opossum/src/nodes/spectrometer.rs b/opossum/src/nodes/spectrometer.rs
index df788b1d1470735e5f9c9426a66908f3e83d142f..ab92d23da7879fbc3cd62a2c42b636a7d4d6bcb9 100644
--- a/opossum/src/nodes/spectrometer.rs
+++ b/opossum/src/nodes/spectrometer.rs
@@ -199,6 +199,9 @@ impl OpticNode for Spectrometer {
     }
     fn reset_data(&mut self) {
         self.light_data = None;
+        todo!();
+
+        // self.surface.reset_hit_map();
     }
 }
 
diff --git a/opossum/src/nodes/wavefront.rs b/opossum/src/nodes/wavefront.rs
index 1edbb0de3be1082adc3830201591de27368f7fb0..1f5de720cbab427e7f0d16b4cfbe1ed03e8b61e7 100644
--- a/opossum/src/nodes/wavefront.rs
+++ b/opossum/src/nodes/wavefront.rs
@@ -264,6 +264,9 @@ impl OpticNode for WaveFront {
     }
     fn reset_data(&mut self) {
         self.light_data = None;
+        todo!();
+
+        // self.surface.reset_hit_map();
     }
 }
 impl From<WaveFrontData> for Proptype {
diff --git a/opossum/src/nodes/wedge/mod.rs b/opossum/src/nodes/wedge/mod.rs
index 996d708d2160a31ddf296558dbd66ea49f4da385..6e365b29b844a9b1b275a1f6054eb2c1310e5d8e 100644
--- a/opossum/src/nodes/wedge/mod.rs
+++ b/opossum/src/nodes/wedge/mod.rs
@@ -245,9 +245,11 @@ impl OpticNode for Wedge {
     fn reset_data(&mut self) {
         self.front_surf.set_backwards_rays_cache(Rays::default());
         self.front_surf.set_forward_rays_cache(Rays::default());
+        self.front_surf.reset_hit_map();
 
         self.rear_surf.set_backwards_rays_cache(Rays::default());
         self.rear_surf.set_forward_rays_cache(Rays::default());
+        self.rear_surf.reset_hit_map();
     }
     fn hit_maps(&self) -> HashMap<String, HitMap> {
         let mut map: HashMap<String, HitMap> = HashMap::default();
diff --git a/opossum/src/surface/hit_map.rs b/opossum/src/surface/hit_map.rs
index f663647222ca783c981fc6aefc90cee64c56f4aa..3e736d7667f28ed6b140f527278285213c11efa7 100644
--- a/opossum/src/surface/hit_map.rs
+++ b/opossum/src/surface/hit_map.rs
@@ -133,7 +133,7 @@ impl Plottable for HitMap {
         );
         let y_limits = AxLims::create_useful_axlims(
             0.1f64.mul_add(-y_diff, y_min),
-            0.1f64.mul_add(-y_diff, y_min),
+            0.1f64.mul_add(y_diff, y_max),
         );
 
         plt_type.set_plot_param(&PlotArgs::XLim(x_limits))?;