diff --git a/src/scene/empty_volume.rs b/src/scene/empty_volume.rs
index db02694..50961dc 100644
--- a/src/scene/empty_volume.rs
+++ b/src/scene/empty_volume.rs
@@ -1,6 +1,7 @@
 use cgmath::Vector3;
 
 use std::cell::RefCell;
+use std::collections::HashSet;
 use std::rc::Rc;
 
 use std::time::Instant;
@@ -263,11 +264,11 @@ impl EmptyVolume {
                         for x in 0..x_size+1 {
                             for y in 0..y_size+1 {
                                 for z in 0..z_size+1 {
-                                    neighbors.set_element(reference.clone(), reference.borrow().position.x + x, reference.borrow().position.y + y, reference.borrow().position.z + z);
+                                    //neighbors.set_element(reference.clone(), reference.borrow().position.x + x, reference.borrow().position.y + y, reference.borrow().position.z + z);
                                     // fill only the edges
-                                    /*if x == 0 || x == x_size || y == 0 || y == y_size || z==0 || z == z_size {
+                                    if x == 0 || x == x_size || y == 0 || y == y_size || z==0 || z == z_size {
                                         neighbors.set_element(reference.clone(), reference.borrow().position.x + x, reference.borrow().position.y + y, reference.borrow().position.z + z)
-                                    }*/
+                                    }
                                 }   
                             }
                         }
@@ -459,7 +460,7 @@ impl EmptyVolume {
                             reference.borrow_mut().color_right= vec![];
                             reference.borrow_mut().roughness_right= vec![];
                         }
-                        
+
                         println!("new volume done");
                         //push to the list
                         volumes.push(reference);
@@ -501,12 +502,14 @@ impl EmptyVolume {
             // MARK: bottom face of the volume
             let mut bottom_neighbors = vec![];
             let mut bottom_elements_num = 0;
+            let mut all_same = true;
             if z_min_pos != 0 {
                 for x in 0..reference.borrow().size_x {
                     for y in 0..reference.borrow().size_y {
                         if let Some(c) = neighbors.get_element(reference.borrow().position.x + x, reference.borrow().position.y + y, z_min_pos) {
                             bottom_elements_num += 1;
                             bottom_neighbors.push(Some(c.clone()));
+                            all_same = all_same && (bottom_neighbors[0] == Some(c));
                         }
                         else {
                             bottom_neighbors.push(None);
@@ -515,7 +518,12 @@ impl EmptyVolume {
                 }
             }
             if bottom_elements_num > 0 {
-                reference.borrow_mut().neighbor_bottom = bottom_neighbors;
+                if all_same {
+                    reference.borrow_mut().neighbor_bottom = vec![bottom_neighbors[0].clone()];
+                }
+                else {
+                    reference.borrow_mut().neighbor_bottom = bottom_neighbors;
+                }
             }
             else {
                 reference.borrow_mut().neighbor_bottom = vec![None];
@@ -523,11 +531,13 @@ impl EmptyVolume {
             // MARK: top face of the volume
             let mut top_neighbors = vec![];
             let mut top_elements_num = 0;
+            let mut all_same = true;
             for x in 0..reference.borrow().size_x {
                 for y in 0..reference.borrow().size_y {
                     if let Some(c) = neighbors.get_element(reference.borrow().position.x + x, reference.borrow().position.y + y, z_max_pos) {
                         top_elements_num += 1;
                         top_neighbors.push(Some(c.clone()));
+                        all_same = all_same && (top_neighbors[0] == Some(c));
                     }
                     else {
                         top_neighbors.push(None);
@@ -535,7 +545,12 @@ impl EmptyVolume {
                 }
             }
             if top_elements_num > 0 {
-                reference.borrow_mut().neighbor_top = top_neighbors;
+                if all_same {
+                    reference.borrow_mut().neighbor_top = vec![top_neighbors[0].clone()];
+                }
+                else {
+                    reference.borrow_mut().neighbor_top = top_neighbors;
+                }
             }
             else {
                 reference.borrow_mut().neighbor_top = vec![None];
@@ -544,11 +559,13 @@ impl EmptyVolume {
             // MARK: back face of the volume
             let mut back_neighbors = vec![];
             let mut back_elements_num = 0;
+            let mut all_same = true;
             for x in 0..reference.borrow().size_x {
                 for z in 0..reference.borrow().size_z {
                     if let Some(c) = neighbors.get_element(reference.borrow().position.x + x, y_max_pos, reference.borrow().position.z + z) {
                         back_elements_num += 1;
                         back_neighbors.push(Some(c.clone()));
+                        all_same = all_same && (back_neighbors[0] == Some(c));
                     }
                     else {
                         back_neighbors.push(None);
@@ -556,7 +573,12 @@ impl EmptyVolume {
                 }
             }
             if back_elements_num > 0 {
-                reference.borrow_mut().neighbor_back = back_neighbors;
+                if all_same {
+                    reference.borrow_mut().neighbor_back = vec![back_neighbors[0].clone()];
+                }
+                else {
+                    reference.borrow_mut().neighbor_back = back_neighbors;
+                }
             }
             else {
                 reference.borrow_mut().neighbor_back = vec![None];
@@ -565,12 +587,14 @@ impl EmptyVolume {
             // MARK: front face of the volume
             let mut front_neighbors = vec![];
             let mut front_elements_num = 0;
+            let mut all_same = true;
             if y_min_pos != 0{
                 for x in 0..reference.borrow().size_x {
                     for z in 0..reference.borrow().size_z {
                         if let Some(c) = neighbors.get_element(reference.borrow().position.x + x, y_min_pos, reference.borrow().position.z + z) {
                             front_elements_num += 1;
                             front_neighbors.push(Some(c.clone()));
+                            all_same = all_same && (front_neighbors[0] == Some(c));
                         }
                         else {
                             front_neighbors.push(None);
@@ -579,7 +603,12 @@ impl EmptyVolume {
                 }
             }
             if front_elements_num > 0 {
-                reference.borrow_mut().neighbor_front = front_neighbors;
+                if all_same {
+                    reference.borrow_mut().neighbor_front = vec![front_neighbors[0].clone()];
+                }
+                else {
+                    reference.borrow_mut().neighbor_front = front_neighbors;
+                }
             }
             else {
                 reference.borrow_mut().neighbor_front = vec![None];
@@ -588,12 +617,14 @@ impl EmptyVolume {
             // MARK: left face of the volume
             let mut left_neighbors = vec![];
             let mut left_elements_num = 0;
+            let mut all_same = true;
             if x_min_pos != 0 {
                 for y in 0..reference.borrow().size_y {
                     for z in 0..reference.borrow().size_z {
                         if let Some(c) = neighbors.get_element(x_min_pos, reference.borrow().position.y + y, reference.borrow().position.z + z) {
                             left_elements_num += 1;
                             left_neighbors.push(Some(c.clone()));
+                            all_same = all_same && (left_neighbors[0] == Some(c));
                         }
                         else {
                             left_neighbors.push(None);
@@ -602,7 +633,12 @@ impl EmptyVolume {
                 }
             }
             if left_elements_num > 0 {
-                reference.borrow_mut().neighbor_left = left_neighbors;
+                if all_same {
+                    reference.borrow_mut().neighbor_left = vec![left_neighbors[0].clone()];
+                }
+                else {
+                    reference.borrow_mut().neighbor_left = left_neighbors;
+                }
             }
             else {
                 reference.borrow_mut().neighbor_left = vec![None];
@@ -611,11 +647,13 @@ impl EmptyVolume {
             // MARK: right face of the volume
             let mut right_neighbors = vec![];
             let mut right_elements_num = 0;
+            let mut all_same = true;
             for y in 0..reference.borrow().size_y {
                 for z in 0..reference.borrow().size_z {
                     if let Some(c) = neighbors.get_element(x_max_pos, reference.borrow().position.y + y, reference.borrow().position.z + z) {
                         right_elements_num += 1;
                         right_neighbors.push(Some(c.clone()));
+                        all_same = all_same && (right_neighbors[0] == Some(c));
                     }
                     else {
                         right_neighbors.push(None);
@@ -623,7 +661,12 @@ impl EmptyVolume {
                 }
             }
             if right_elements_num > 0 {
-                reference.borrow_mut().neighbor_right = right_neighbors;
+                if all_same {
+                    reference.borrow_mut().neighbor_right = vec![right_neighbors[0].clone()];
+                }
+                else {
+                    reference.borrow_mut().neighbor_right = right_neighbors;
+                }
             }
             else {
                 reference.borrow_mut().neighbor_right = vec![None];
@@ -1151,4 +1194,13 @@ impl EmptyVolume {
         }
         out_index
     }
+}
+
+impl PartialEq for EmptyVolume {
+    fn eq(&self, other: &Self) -> bool {
+        self.position == other.position
+            && self.size_x == other.size_x
+            && self.size_y == other.size_y
+            && self.size_z == other.size_z
+    }
 }
\ No newline at end of file