diff --git a/include/ALL.hpp b/include/ALL.hpp
index 1dfb8fc118f941eac1b044faf2222078f5761c43..5cd8a14d24763f497aee55220a2002cc4cc87d04 100644
--- a/include/ALL.hpp
+++ b/include/ALL.hpp
@@ -437,25 +437,25 @@ template <class T, class W> void ALL<T,W>::setup(ALL_LB_t method)
         {
             case ALL_LB_t::TENSOR:
                 balancer.reset(new ALL_Tensor_LB<T,W>(dimension,work_array->at(0),gamma));
-                ((ALL_Tensor_LB<T,W>&)*balancer).set_vertices(outline->data());
+                ((ALL_Tensor_LB<T,W>*)balancer.get())->set_vertices(outline->data());
                 break;
             case ALL_LB_t::STAGGERED:
                 balancer.reset(new ALL_Staggered_LB<T,W>(dimension,work_array->at(0),gamma));
-                ((ALL_Staggered_LB<T,W>&)*balancer).set_vertices(outline->data());
+                ((ALL_Staggered_LB<T,W>*)balancer.get())->set_vertices(outline->data());
                 break;
             case ALL_LB_t::UNSTRUCTURED:
             	balancer.reset(new ALL_Unstructured_LB<T,W>(dimension,work_array->at(0),gamma));
-                ((ALL_Unstructured_LB<T,W>&)*balancer).set_vertices(vertices);
+                ((ALL_Unstructured_LB<T,W>*)balancer.get())->set_vertices(vertices);
                 break;
             case ALL_LB_t::VORONOI:
 #ifdef ALL_VORONOI
                 balancer.reset(new ALL_Voronoi_LB<T,W>(dimension,work_array->at(0),gamma));
-                ((ALL_Voronoi_LB<T,W>&)*balancer).set_vertices(vertices);
+                ((ALL_Voronoi_LB<T,W>*)balancer.get())->set_vertices(vertices);
 #endif                
                 break;
             case ALL_LB_t::HISTOGRAM:
                 balancer.reset(new ALL_Histogram_LB<T,W>(dimension,work_array,gamma));
-                ((ALL_Histogram_LB<T,W>&)*balancer).set_vertices(outline->data());
+                ((ALL_Histogram_LB<T,W>*)balancer.get())->set_vertices(outline->data());
                 break;
             default:
                 throw ALL_Invalid_Argument_Exception(
@@ -758,11 +758,11 @@ template <class T, class W> void ALL<T,W>::set_sys_size(ALL_LB_t method, std::ve
             break;
         case ALL_LB_t::VORONOI:
 #ifdef ALL_VORONOI
-            ((ALL_Voronoi_LB<T,W>*)balancer)->set_sys_size(s_size);
+            ((ALL_Voronoi_LB<T,W>*)balancer.get())->set_sys_size(s_size);
 #endif
             break;
         case ALL_LB_t::HISTOGRAM:
-            ((ALL_Histogram_LB<T,W>*)balancer)->set_sys_size(s_size);
+            ((ALL_Histogram_LB<T,W>*)balancer.get())->set_sys_size(s_size);
             break;
         default:
             throw ALL_Invalid_Argument_Exception(
@@ -790,7 +790,7 @@ template <class T, class W> void ALL<T,W>::set_method_data(ALL_LB_t method, void
             break;
 #endif        
         case ALL_LB_t::HISTOGRAM:
-            ((ALL_Histogram_LB<T,W>*)balancer)->set_data(data);
+            ((ALL_Histogram_LB<T,W>*)balancer.get())->set_data(data);
             break;
     }
 }