diff --git a/Device/Histo/SimulationResult.h b/Device/Histo/SimulationResult.h
index a062e240d7db7075620108c1e600635c70a1a60c..c62b8c0400082c819809b5fbf63b3ff09b6c93ac 100644
--- a/Device/Histo/SimulationResult.h
+++ b/Device/Histo/SimulationResult.h
@@ -38,7 +38,9 @@ public:
     SimulationResult& operator=(SimulationResult&& other) noexcept;
 
     const std::vector<double>& flatVector() const;
+
     Datafield* cloned_field() const;
+    const Datafield& data_field() const { return *m_data; }
 
     std::pair<double, double> axisMinMax(size_t i, Coords units = Coords::UNDEFINED) const;
 
@@ -46,8 +48,6 @@ public:
 
     const double& operator[](size_t i) const;
 
-    const Datafield& data_field() const { return *m_data; } // TODO disambiguate from cloned_field()
-
     size_t rank() const;
     size_t size() const;
     bool empty() const { return size() == 0; }
diff --git a/auto/Wrap/libBornAgainDevice.py b/auto/Wrap/libBornAgainDevice.py
index 8d12a464a8aff0c95a0fe947e140df38ac96b51a..2846477a96040636d4054010144a6a2d29a6a73e 100644
--- a/auto/Wrap/libBornAgainDevice.py
+++ b/auto/Wrap/libBornAgainDevice.py
@@ -3094,6 +3094,10 @@ class SimulationResult(object):
         r"""cloned_field(SimulationResult self) -> Datafield"""
         return _libBornAgainDevice.SimulationResult_cloned_field(self)
 
+    def data_field(self):
+        r"""data_field(SimulationResult self) -> Datafield"""
+        return _libBornAgainDevice.SimulationResult_data_field(self)
+
     def axisMinMax(self, *args):
         r"""axisMinMax(SimulationResult self, size_t i, Coords units=UNDEFINED) -> pvacuum_double_t"""
         return _libBornAgainDevice.SimulationResult_axisMinMax(self, *args)
@@ -3102,10 +3106,6 @@ class SimulationResult(object):
         r"""nameOfAxis(SimulationResult self, size_t i, Coords units=UNDEFINED) -> std::string"""
         return _libBornAgainDevice.SimulationResult_nameOfAxis(self, *args)
 
-    def data_field(self):
-        r"""data_field(SimulationResult self) -> Datafield"""
-        return _libBornAgainDevice.SimulationResult_data_field(self)
-
     def rank(self):
         r"""rank(SimulationResult self) -> size_t"""
         return _libBornAgainDevice.SimulationResult_rank(self)
diff --git a/auto/Wrap/libBornAgainDevice_wrap.cpp b/auto/Wrap/libBornAgainDevice_wrap.cpp
index d096e3b18dfb45aef0cf4ba23d7f396851ea2b9b..5f50c1c318c1b90a286c4d0add5409dcf4480dc6 100644
--- a/auto/Wrap/libBornAgainDevice_wrap.cpp
+++ b/auto/Wrap/libBornAgainDevice_wrap.cpp
@@ -36791,6 +36791,29 @@ fail:
 }
 
 
+SWIGINTERN PyObject *_wrap_SimulationResult_data_field(PyObject *self, PyObject *args) {
+  PyObject *resultobj = 0;
+  SimulationResult *arg1 = (SimulationResult *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  PyObject *swig_obj[1] ;
+  Datafield *result = 0 ;
+  
+  if (!args) SWIG_fail;
+  swig_obj[0] = args;
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_SimulationResult, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SimulationResult_data_field" "', argument " "1"" of type '" "SimulationResult const *""'"); 
+  }
+  arg1 = reinterpret_cast< SimulationResult * >(argp1);
+  result = (Datafield *) &((SimulationResult const *)arg1)->data_field();
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Datafield, 0 |  0 );
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
 SWIGINTERN PyObject *_wrap_SimulationResult_axisMinMax__SWIG_0(PyObject *self, Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   SimulationResult *arg1 = (SimulationResult *) 0 ;
@@ -37031,29 +37054,6 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_SimulationResult_data_field(PyObject *self, PyObject *args) {
-  PyObject *resultobj = 0;
-  SimulationResult *arg1 = (SimulationResult *) 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject *swig_obj[1] ;
-  Datafield *result = 0 ;
-  
-  if (!args) SWIG_fail;
-  swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_SimulationResult, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SimulationResult_data_field" "', argument " "1"" of type '" "SimulationResult const *""'"); 
-  }
-  arg1 = reinterpret_cast< SimulationResult * >(argp1);
-  result = (Datafield *) &((SimulationResult const *)arg1)->data_field();
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Datafield, 0 |  0 );
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
 SWIGINTERN PyObject *_wrap_SimulationResult_rank(PyObject *self, PyObject *args) {
   PyObject *resultobj = 0;
   SimulationResult *arg1 = (SimulationResult *) 0 ;
@@ -38495,9 +38495,9 @@ static PyMethodDef SwigMethods[] = {
 		""},
 	 { "SimulationResult_flatVector", _wrap_SimulationResult_flatVector, METH_O, "SimulationResult_flatVector(SimulationResult self) -> vdouble1d_t"},
 	 { "SimulationResult_cloned_field", _wrap_SimulationResult_cloned_field, METH_O, "SimulationResult_cloned_field(SimulationResult self) -> Datafield"},
+	 { "SimulationResult_data_field", _wrap_SimulationResult_data_field, METH_O, "SimulationResult_data_field(SimulationResult self) -> Datafield"},
 	 { "SimulationResult_axisMinMax", _wrap_SimulationResult_axisMinMax, METH_VARARGS, "SimulationResult_axisMinMax(SimulationResult self, size_t i, Coords units=UNDEFINED) -> pvacuum_double_t"},
 	 { "SimulationResult_nameOfAxis", _wrap_SimulationResult_nameOfAxis, METH_VARARGS, "SimulationResult_nameOfAxis(SimulationResult self, size_t i, Coords units=UNDEFINED) -> std::string"},
-	 { "SimulationResult_data_field", _wrap_SimulationResult_data_field, METH_O, "SimulationResult_data_field(SimulationResult self) -> Datafield"},
 	 { "SimulationResult_rank", _wrap_SimulationResult_rank, METH_O, "SimulationResult_rank(SimulationResult self) -> size_t"},
 	 { "SimulationResult_size", _wrap_SimulationResult_size, METH_O, "SimulationResult_size(SimulationResult self) -> size_t"},
 	 { "SimulationResult_empty", _wrap_SimulationResult_empty, METH_O, "SimulationResult_empty(SimulationResult self) -> bool"},