diff --git a/Core/Fitting/FitObjective.cpp b/Core/Fitting/FitObjective.cpp
index 365bb6d9e7769506ab62d7009e133fc4c1ef3f29..8cfdf21b33b1c63405e3ffdb2a58ea4a6a5dacf6 100644
--- a/Core/Fitting/FitObjective.cpp
+++ b/Core/Fitting/FitObjective.cpp
@@ -195,13 +195,6 @@ std::vector<double> FitObjective::evaluate_residuals(const mumufit::Parameters&
     return result;
 }
 
-size_t FitObjective::numberOfFitElements() const
-{
-    return std::accumulate(
-        m_fit_objects.begin(), m_fit_objects.end(), 0u,
-        [](size_t acc, auto& obj) -> size_t { return acc + obj.numberOfFitElements(); });
-}
-
 //! Returns simulation result in the form of SimulationResult.
 SimulationResult FitObjective::simulationResult(size_t i_item) const
 {
@@ -394,7 +387,6 @@ std::vector<double> FitObjective::composeArray(DataPairAccessor getter) const
         return (m_fit_objects[0].*getter)();
 
     std::vector<double> result;
-    result.reserve(numberOfFitElements());
     for (auto& pair : m_fit_objects) {
         std::vector<double> array = (pair.*getter)();
         std::move(array.begin(), array.end(), std::back_inserter(result));
diff --git a/Core/Fitting/FitObjective.h b/Core/Fitting/FitObjective.h
index 83c92816c0c7b392200231287741377da54e8a6c..7279a309d92c4d9e6b8fcdfcbe0f7b5ca476ce34 100644
--- a/Core/Fitting/FitObjective.h
+++ b/Core/Fitting/FitObjective.h
@@ -73,8 +73,6 @@ public:
 
     virtual std::vector<double> evaluate_residuals(const mumufit::Parameters& params);
 
-    size_t numberOfFitElements() const;
-
     SimulationResult simulationResult(size_t i_item = 0) const;
     SimulationResult experimentalData(size_t i_item = 0) const;
     SimulationResult uncertaintyData(size_t i_item = 0) const;
diff --git a/Core/Fitting/SimDataPair.cpp b/Core/Fitting/SimDataPair.cpp
index d7040678e57de23712a4088e534628b1eb08aae9..303c645553e5b9791e621000043dc86aba132559 100644
--- a/Core/Fitting/SimDataPair.cpp
+++ b/Core/Fitting/SimDataPair.cpp
@@ -152,11 +152,6 @@ bool SimDataPair::containsUncertainties() const
     return static_cast<bool>(m_raw_uncertainties);
 }
 
-size_t SimDataPair::numberOfFitElements() const
-{
-    return m_simulation ? m_simulation->intensityMapSize() : 0;
-}
-
 SimulationResult SimDataPair::simulationResult() const
 {
     if (m_sim_data.empty())
diff --git a/Core/Fitting/SimDataPair.h b/Core/Fitting/SimDataPair.h
index a852a11a837b2b786ef1b4b7a546c7626b06b671..2c980066fcc80d80f23fa52898487d2e8592e3db 100644
--- a/Core/Fitting/SimDataPair.h
+++ b/Core/Fitting/SimDataPair.h
@@ -44,9 +44,6 @@ public:
 
     bool containsUncertainties() const;
 
-    //! Returns the number of elements in the fit area
-    size_t numberOfFitElements() const;
-
     //! Returns the result of last computed simulation
     SimulationResult simulationResult() const;
 
diff --git a/Tests/Functional/PyFit/fitobjective_api.py b/Tests/Functional/PyFit/fitobjective_api.py
index b3f2bbe5fd82d6b006e540905c041201145b4056..153f47856bedcf13f9fc409d91eff3d0b7d556d6 100644
--- a/Tests/Functional/PyFit/fitobjective_api.py
+++ b/Tests/Functional/PyFit/fitobjective_api.py
@@ -64,12 +64,10 @@ class FitObjectiveAPITest(unittest.TestCase):
         objective = ba.FitObjective()
         objective.addSimulationAndData(builder.build_simulation, data, 1)
         self.assertEqual(builder.m_ncalls, 0)
-        self.assertEqual(objective.numberOfFitElements(), 0)
 
         # running objective function
         objective.evaluate(pars)
         self.assertEqual(builder.m_ncalls, 1)
-        self.assertEqual(objective.numberOfFitElements(), builder.size())
         self.assertEqual(builder.m_pars["par0"], 0)
         self.assertEqual(builder.m_pars["par1"], 1)
 
diff --git a/Tests/Unit/Core/FitObjectiveTest.cpp b/Tests/Unit/Core/FitObjectiveTest.cpp
index f0f1503efca0ae2e7ebd969daf2e8bec106aa466..b6f9620a14682289c40cbdde894ed1575cdda09f 100644
--- a/Tests/Unit/Core/FitObjectiveTest.cpp
+++ b/Tests/Unit/Core/FitObjectiveTest.cpp
@@ -33,11 +33,6 @@ TEST_F(FitObjectiveTest, twoDatasets)
     mumufit::Parameters params;
     objective.evaluate(params);
 
-    // number of fit elements should be the sum of two dataset sizes
-    EXPECT_EQ(helper1.m_builder_calls, 1u);
-    EXPECT_EQ(helper2.m_builder_calls, 1u);
-    EXPECT_EQ(objective.numberOfFitElements(), helper1.size() + helper2.size());
-
     // checking flat array with experimental data made of two OutputData
     std::vector<double> expected_exp1(helper1.size(), exp_value1);
     std::vector<double> expected_exp2(helper2.size(), exp_value2);
diff --git a/Tests/Unit/Core/SimDataPairTest.cpp b/Tests/Unit/Core/SimDataPairTest.cpp
index 4b61c95c1421447ca5824b8727631fa60449c501..0b574c467106f421ba33215d90b885c57bca6dfe 100644
--- a/Tests/Unit/Core/SimDataPairTest.cpp
+++ b/Tests/Unit/Core/SimDataPairTest.cpp
@@ -19,7 +19,6 @@ TEST_F(SimDataPairTest, standardPair)
     SimDataPair obj(builder, *helper.createData(exp_value), nullptr, dataset_weight);
 
     // default state, no simulation has been called yet
-    EXPECT_EQ(obj.numberOfFitElements(), 0u);
     EXPECT_THROW(obj.uncertainties_array(), std::runtime_error);
     EXPECT_THROW(obj.user_weights_array(), std::runtime_error);
     EXPECT_THROW(obj.simulation_array(), std::runtime_error);
@@ -33,19 +32,10 @@ TEST_F(SimDataPairTest, standardPair)
     obj.execSimulation(params);
     EXPECT_EQ(helper.m_builder_calls, 1u);
 
-    // checking simulated and experimental data
-    const size_t expected_size = helper.m_nx * helper.m_ny;
-    EXPECT_EQ(obj.numberOfFitElements(), expected_size);
-    EXPECT_EQ(obj.simulationResult().size(), expected_size);
-    EXPECT_EQ(obj.experimentalData().size(), expected_size);
-
     // checking arrays
     auto array = obj.simulation_array();
-    EXPECT_EQ(array.size(), expected_size);
     EXPECT_DOUBLE_EQ(std::accumulate(array.begin(), array.end(), 0), 0.0);
     array = obj.experimental_array();
-    EXPECT_EQ(obj.experimental_array().size(), expected_size);
-    EXPECT_DOUBLE_EQ(std::accumulate(array.begin(), array.end(), 0), expected_size * exp_value);
 
     // calling builder second time
     obj.execSimulation(params);
@@ -53,11 +43,8 @@ TEST_F(SimDataPairTest, standardPair)
 
     // checking arrays
     array = obj.simulation_array();
-    EXPECT_EQ(array.size(), expected_size);
     EXPECT_DOUBLE_EQ(std::accumulate(array.begin(), array.end(), 0), 0.0);
     array = obj.experimental_array();
-    EXPECT_EQ(obj.experimental_array().size(), expected_size);
-    EXPECT_DOUBLE_EQ(std::accumulate(array.begin(), array.end(), 0), expected_size * exp_value);
 }
 
 TEST_F(SimDataPairTest, moveTest)
@@ -78,30 +65,10 @@ TEST_F(SimDataPairTest, moveTest)
     obj.execSimulation(params);
     EXPECT_EQ(helper.m_builder_calls, 1u);
 
-    // checking simulated and experimental data
-    const size_t expected_size = helper.m_nx * helper.m_ny;
-    EXPECT_EQ(obj.numberOfFitElements(), expected_size);
-    EXPECT_EQ(obj.simulationResult().size(), expected_size);
-    EXPECT_EQ(obj.experimentalData().size(), expected_size);
-
     // Making clone.
     SimDataPair moved = std::move(obj);
 
-    // Checking clone properties
-    EXPECT_EQ(moved.numberOfFitElements(), expected_size);
-    EXPECT_EQ(moved.uncertainties_array().size(), expected_size);
-    EXPECT_EQ(moved.user_weights_array().size(), expected_size);
-    EXPECT_EQ(moved.simulation_array().size(), expected_size);
-    EXPECT_EQ(moved.experimental_array().size(), expected_size);
-    EXPECT_EQ(moved.simulationResult().size(), expected_size);
-    EXPECT_EQ(moved.experimentalData().size(), expected_size);
-
     // calling clone's builder once
     moved.execSimulation(params);
     EXPECT_EQ(helper.m_builder_calls, 2u);
-
-    // checking simulated and experimental data
-    EXPECT_EQ(moved.numberOfFitElements(), expected_size);
-    EXPECT_EQ(moved.simulationResult().size(), expected_size);
-    EXPECT_EQ(moved.experimentalData().size(), expected_size);
 }
diff --git a/auto/Wrap/doxygenCore.i b/auto/Wrap/doxygenCore.i
index 3e8b335425f0808b55694a902aaeb1b70898534e..cbd5b073f4100bafbee516878fe2b60b9f375ff4 100644
--- a/auto/Wrap/doxygenCore.i
+++ b/auto/Wrap/doxygenCore.i
@@ -446,9 +446,6 @@ weight of dataset in metric calculations
 %feature("docstring")  FitObjective::evaluate_residuals "std::vector< double > FitObjective::evaluate_residuals(const mumufit::Parameters &params)
 ";
 
-%feature("docstring")  FitObjective::numberOfFitElements "size_t FitObjective::numberOfFitElements() const
-";
-
 %feature("docstring")  FitObjective::simulationResult "SimulationResult FitObjective::simulationResult(size_t i_item=0) const
 
 Returns simulation result in the form of SimulationResult. 
@@ -1780,11 +1777,6 @@ C++ includes: SimDataPair.h
 %feature("docstring")  SimDataPair::containsUncertainties "bool SimDataPair::containsUncertainties() const
 ";
 
-%feature("docstring")  SimDataPair::numberOfFitElements "size_t SimDataPair::numberOfFitElements() const
-
-Returns the number of elements in the fit area. 
-";
-
 %feature("docstring")  SimDataPair::simulationResult "SimulationResult SimDataPair::simulationResult() const
 
 Returns the result of last computed simulation. 
diff --git a/auto/Wrap/libBornAgainCore.py b/auto/Wrap/libBornAgainCore.py
index 836afc8be4eff24530adec25e234711ca5ed7d7f..40cc556e6f19589159c64e39f5b522ca4d032144 100644
--- a/auto/Wrap/libBornAgainCore.py
+++ b/auto/Wrap/libBornAgainCore.py
@@ -2947,14 +2947,6 @@ class FitObjective(object):
         """
         return _libBornAgainCore.FitObjective_evaluate_residuals_cpp(self, params)
 
-    def numberOfFitElements(self):
-        r"""
-        numberOfFitElements(FitObjective self) -> size_t
-        size_t FitObjective::numberOfFitElements() const
-
-        """
-        return _libBornAgainCore.FitObjective_numberOfFitElements(self)
-
     def simulationResult(self, i_item=0):
         r"""
         simulationResult(FitObjective self, size_t i_item=0) -> SimulationResult
diff --git a/auto/Wrap/libBornAgainCore_wrap.cpp b/auto/Wrap/libBornAgainCore_wrap.cpp
index f37a4a94266b37c53c4355b6227ec3246d64c250..45ab2d483db70841e4d1ffd7bf6fdf3852e824b9 100644
--- a/auto/Wrap/libBornAgainCore_wrap.cpp
+++ b/auto/Wrap/libBornAgainCore_wrap.cpp
@@ -36224,29 +36224,6 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_FitObjective_numberOfFitElements(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  FitObjective *arg1 = (FitObjective *) 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject *swig_obj[1] ;
-  size_t result;
-  
-  if (!args) SWIG_fail;
-  swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FitObjective, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FitObjective_numberOfFitElements" "', argument " "1"" of type '" "FitObjective const *""'"); 
-  }
-  arg1 = reinterpret_cast< FitObjective * >(argp1);
-  result = ((FitObjective const *)arg1)->numberOfFitElements();
-  resultobj = SWIG_From_size_t(static_cast< size_t >(result));
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
 SWIGINTERN PyObject *_wrap_FitObjective_simulationResult__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   FitObjective *arg1 = (FitObjective *) 0 ;
@@ -43942,11 +43919,6 @@ static PyMethodDef SwigMethods[] = {
 		"std::vector< double > FitObjective::evaluate_residuals(const mumufit::Parameters &params)\n"
 		"\n"
 		""},
-	 { "FitObjective_numberOfFitElements", _wrap_FitObjective_numberOfFitElements, METH_O, "\n"
-		"FitObjective_numberOfFitElements(FitObjective self) -> size_t\n"
-		"size_t FitObjective::numberOfFitElements() const\n"
-		"\n"
-		""},
 	 { "FitObjective_simulationResult", _wrap_FitObjective_simulationResult, METH_VARARGS, "\n"
 		"FitObjective_simulationResult(FitObjective self, size_t i_item=0) -> SimulationResult\n"
 		"SimulationResult FitObjective::simulationResult(size_t i_item=0) const\n"