diff --git a/examples/pa_doublepass_graph.rs b/examples/pa_doublepass_graph.rs
index 4fd83369ffe7e9de206a02c10fd5bb342ecd6e87..d82dff4f8f935897b227e5b1a9bf081a5e751025 100644
--- a/examples/pa_doublepass_graph.rs
+++ b/examples/pa_doublepass_graph.rs
@@ -13,12 +13,11 @@ fn main() {
     let n3 = scenery.add_node(OpticNode::new("Faraday", Box::new(NodeDummy)));
     let n4 = scenery.add_node(OpticNode::new("0° mirror", Box::new(NodeDummy)));
 
-
-    //let ref_node= NodeReference::new(&Box::new(NodeDummy));
-
-    let mut node= OpticNode::new("Faraday", Box::new(NodeDummy));
+    let mut node= OpticNode::new("Faraday", Box::new(NodeDummy));   
     node.set_inverted(true);
-    let n3i=scenery.add_node(node);
+    let _ref_node= NodeReference::new(&node);
+    scenery.add_node(node);
+    //let n3i=scenery.add_node(OpticNode::new("ref", Box::new(ref_node)));
 
     let mut node= OpticNode::new("19mm amp", Box::new(NodeDummy));
     node.set_inverted(true);
@@ -31,8 +30,8 @@ fn main() {
     scenery.connect_nodes(n1, n2).unwrap();
     scenery.connect_nodes(n2, n3).unwrap();
     scenery.connect_nodes(n3, n4).unwrap();
-    scenery.connect_nodes(n4, n3i).unwrap();
-    scenery.connect_nodes(n3i, n2i).unwrap();
+    // scenery.connect_nodes(n4, n3i).unwrap();
+    // scenery.connect_nodes(n3i, n2i).unwrap();
     scenery.connect_nodes(n2i, n1i).unwrap();
 
     let path = "graph.dot";
diff --git a/src/nodes/node_reference.rs b/src/nodes/node_reference.rs
index 383144ed30e361e299289669da69e930e1fba245..a19692c815340d651b2856a0b82377c009593d29 100644
--- a/src/nodes/node_reference.rs
+++ b/src/nodes/node_reference.rs
@@ -2,11 +2,11 @@ use crate::optic_node::{OpticNode, Optical};
 
 /// A virtual component referring to another existing component. This node type is necessary in order to model resonators (loops) or double-pass systems.
 pub struct NodeReference<'a> {
-    reference: &'a Box<dyn Optical>,
+    reference: &'a OpticNode,
 }
 
 impl<'a> NodeReference<'a> {
-    pub fn new(node: &'a Box<dyn Optical>) -> Self {
+    pub fn new(node: &'a OpticNode) -> Self {
         Self { reference: node }
     }
 }
diff --git a/src/optic_scenery.rs b/src/optic_scenery.rs
index 29243d4e15f3c51ff528c4a644b52ff752dacded..dda8b4b8390db3202dfca7a94460fc6b98cf9bef 100644
--- a/src/optic_scenery.rs
+++ b/src/optic_scenery.rs
@@ -1,5 +1,6 @@
 use crate::optic_node::OpticNode;
 use petgraph::algo::*;
+use petgraph::data::DataMap;
 use petgraph::prelude::{DiGraph, EdgeIndex, NodeIndex};
 
 #[derive(Debug, Clone)]