diff --git a/interface/pybind11_wrapper.cpp b/interface/pybind11_wrapper.cpp
index 124367fc710505d57cd21d97aa17158fdb03ea59..5b467c374a22984bf265435e57444d1dcf66aa22 100644
--- a/interface/pybind11_wrapper.cpp
+++ b/interface/pybind11_wrapper.cpp
@@ -61,10 +61,9 @@ inline auto call_method_factory(py::module &m, const std::string& attribute) {
 }
 
 template<typename TYPE>
-TYPE& get_typed(py::object& o){
+const TYPE& get_typed(py::object& o){
     using namespace teqp::cppinterface;
-    auto model = o.cast<const AbstractModel *>()->get_model();
-    return std::get<TYPE>(model);
+    return std::get<TYPE>(o.cast<const AbstractModel *>()->get_model());
 }
 
 // You cannot know at runtime what is contained in the model so you must iterate