diff --git a/Device/Coord/CoordSystem1D.cpp b/Device/Coord/CoordSystem1D.cpp
index 0ca9a27cc249c075922c5d21f7211ad4008a959c..79493314f2a0f87a5ffe6a41a219d41dab7edb37 100644
--- a/Device/Coord/CoordSystem1D.cpp
+++ b/Device/Coord/CoordSystem1D.cpp
@@ -121,8 +121,8 @@ IAxis* CoordSystem1D::createConvertedAxis(size_t i_axis, Coords units) const
     return new PointwiseAxis(axisName(0, units), coords);
 }
 
-Powerfield<double>*
-CoordSystem1D::createConvertedData(const Powerfield<double>& data, Coords units) const
+Powerfield<double>* CoordSystem1D::createConvertedData(const Powerfield<double>& data,
+                                                       Coords units) const
 {
     ASSERT(data.rank() == 1);
 
diff --git a/Device/Coord/ICoordSystem.cpp b/Device/Coord/ICoordSystem.cpp
index 02febf1bd25d3b5cc8e9621d0c68c788d4a9513d..2a60be6f36e677e6a8b5e2b0956b58ad964bc998 100644
--- a/Device/Coord/ICoordSystem.cpp
+++ b/Device/Coord/ICoordSystem.cpp
@@ -18,15 +18,17 @@
 
 ICoordSystem::~ICoordSystem() = default;
 
-std::unique_ptr<Powerfield<double>> ICoordSystem::createPowerfield(Coords units) const
+std::vector<IAxis*> ICoordSystem::defaultAxes() const
 {
-    std::vector<IAxis*> axes;
-    for (size_t i = 0; i < rank(); ++i)
-        axes.emplace_back(createConvertedAxis(i, units));
+    return convertedAxes(defaultUnits());
+}
 
-    std::unique_ptr<Powerfield<double>> result(new Powerfield<double>(axes));
-    result->setAllTo(0.0);
-    return result;
+std::vector<IAxis*> ICoordSystem::convertedAxes(Coords units) const
+{
+    std::vector<IAxis*> ret;
+    for (size_t i = 0; i < rank(); ++i)
+        ret.emplace_back(createConvertedAxis(i, units));
+    return ret;
 }
 
 std::string ICoordSystem::axisName(size_t i_axis, const Coords units) const
@@ -39,8 +41,8 @@ std::string ICoordSystem::axisName(size_t i_axis, const Coords units) const
     return it->second;
 }
 
-Powerfield<double>*
-ICoordSystem::createConvertedData(const Powerfield<double>& data, Coords units) const
+Powerfield<double>* ICoordSystem::createConvertedData(const Powerfield<double>& data,
+                                                      Coords units) const
 {
     std::vector<IAxis*> axes;
     for (size_t i = 0; i < rank(); ++i)
diff --git a/Device/Coord/ICoordSystem.h b/Device/Coord/ICoordSystem.h
index a3857d218b8f32c91eb9d41df43634334b5f2709..703fdb73a7dab487cd14c5263f871eb91dba5988 100644
--- a/Device/Coord/ICoordSystem.h
+++ b/Device/Coord/ICoordSystem.h
@@ -44,9 +44,6 @@ public:
 
     ICoordSystem* clone() const override = 0;
 
-    //! Returns zero-valued output data array in specified units
-    std::unique_ptr<Powerfield<double>> createPowerfield(Coords units) const;
-
     virtual size_t rank() const = 0;
 
     virtual double calculateMin(size_t i_axis, Coords units) const = 0;
@@ -60,6 +57,9 @@ public:
 
     virtual IAxis* createConvertedAxis(size_t i_axis, Coords units) const = 0;
 
+    std::vector<IAxis*> defaultAxes() const;
+    std::vector<IAxis*> convertedAxes(Coords units) const;
+
     //! Creates Powerfield array in converter units.
     virtual Powerfield<double>* createConvertedData(const Powerfield<double>& data,
                                                     Coords units) const;
diff --git a/Device/Data/LLData.h b/Device/Data/LLData.h
index 5fc3d88468bc17275234a42bd9401773d9640527..c7c4557c87978b7e65ab7ad5251a606c553b62ea 100644
--- a/Device/Data/LLData.h
+++ b/Device/Data/LLData.h
@@ -242,8 +242,7 @@ void LLData<T>::clear()
 template <class T>
 inline bool LLData<T>::checkSizes(size_t rank, const int* sizes) const
 {
-    return std::all_of(sizes, sizes + rank,
-                       [](const int& dim) -> bool { return dim > 0; });
+    return std::all_of(sizes, sizes + rank, [](const int& dim) -> bool { return dim > 0; });
 }
 
 template <class T>
diff --git a/Fit/Adapter/MinimizerAdapter.cpp b/Fit/Adapter/MinimizerAdapter.cpp
index 2cabe7c02cfcba94bd895d228b212b82432d0812..eb2f902ff3bb747c04fa468112de65b50be89277 100644
--- a/Fit/Adapter/MinimizerAdapter.cpp
+++ b/Fit/Adapter/MinimizerAdapter.cpp
@@ -199,8 +199,7 @@ std::vector<double> MinimizerAdapter::parErrorsAtMinimum() const
     std::vector<double> result;
     result.resize(fitRank(), 0.0);
     if (rootMinimizer()->Errors() != nullptr) {
-        std::copy(rootMinimizer()->Errors(), rootMinimizer()->Errors() + fitRank(),
-                  result.begin());
+        std::copy(rootMinimizer()->Errors(), rootMinimizer()->Errors() + fitRank(), result.begin());
     }
     return result;
 }
diff --git a/GUI/Model/Data/DataViewUtils.cpp b/GUI/Model/Data/DataViewUtils.cpp
index 43e26503da94bc42637e1eade3314ad350934d99..4994b928f0c0dd3cbc52d5809a12f57008fe2c9b 100644
--- a/GUI/Model/Data/DataViewUtils.cpp
+++ b/GUI/Model/Data/DataViewUtils.cpp
@@ -53,15 +53,15 @@ void GUI::Model::DataViewUtils::updateAxesTitle(Data1DViewItem* view_item)
 std::unique_ptr<Powerfield<double>>
 GUI::Model::DataViewUtils::getTranslatedData(Data1DViewItem* view_item, DataItem* data_item)
 {
-    std::unique_ptr<Powerfield<double>> result;
     if (!data_item || !data_item->getPowerfield())
-        return result;
+        return {};
 
     auto* converter = getConverter(view_item);
     auto current_units = selectedUnits(view_item);
 
-    result = converter->createPowerfield(current_units);
-    result->setRawDataVector(data_item->getPowerfield()->getRawDataVector());
+    auto ret = std::make_unique<Powerfield<double>>(converter->convertedAxes(current_units));
 
-    return result;
+    ret->setRawDataVector(data_item->getPowerfield()->getRawDataVector());
+
+    return ret;
 }
diff --git a/GUI/Model/Data/JobItemUtils.cpp b/GUI/Model/Data/JobItemUtils.cpp
index fadb626171d218463a8febea1feaee4bdcc6f8c7..dacc930be746a94d71b8fedc8662f77a4d69dd28 100644
--- a/GUI/Model/Data/JobItemUtils.cpp
+++ b/GUI/Model/Data/JobItemUtils.cpp
@@ -51,7 +51,9 @@ void GUI::Model::JobItemUtils::updateDataAxes(DataItem* intensityItem,
     Coords requested_units = GUI::Util::CoordName::coordFromName(intensityItem->selectedCoords());
 
     auto* const converter = instrumentItem->createCoordSystem();
-    auto newData = converter->createPowerfield(requested_units);
+
+    auto newData = std::make_unique<Powerfield<double>>(converter->convertedAxes(requested_units));
+
     newData->setRawDataVector(intensityItem->getPowerfield()->getRawDataVector());
 
     intensityItem->setPowerfield(newData.release());
@@ -81,7 +83,7 @@ void GUI::Model::JobItemUtils::createDefaultDetectorMap(DataItem* intensityItem,
                                                         const Instrument2DItem* instrumentItem)
 {
     auto* const converter = instrumentItem->createCoordSystem();
-    auto output_data = converter->createPowerfield(converter->defaultUnits());
+    auto output_data = std::make_unique<Powerfield<double>>(converter->defaultAxes());
     intensityItem->setPowerfield(output_data.release());
     setIntensityItemCoords(intensityItem, *converter);
     updateAxesTitle(intensityItem, *converter, converter->defaultUnits());
diff --git a/GUI/Support/IO/IOUtils.cpp b/GUI/Support/IO/IOUtils.cpp
index a3684388ab864a6262649a03e190c9067d878c72..1f77e2b6f4a25434df0c2aa1d7dfd4c118a15b64 100644
--- a/GUI/Support/IO/IOUtils.cpp
+++ b/GUI/Support/IO/IOUtils.cpp
@@ -19,7 +19,7 @@
 std::unique_ptr<Powerfield<double>> GUI::Util::IO::binifyAxes(const Powerfield<double>& data)
 {
     std::vector<IAxis*> axes;
-    for (size_t i=0; i<data.rank(); ++i)
+    for (size_t i = 0; i < data.rank(); ++i)
         axes.emplace_back(data.axis(i).clone());
 
     auto result = std::make_unique<Powerfield<double>>(axes);
diff --git a/GUI/View/Fit/FitObjectiveBuilder.cpp b/GUI/View/Fit/FitObjectiveBuilder.cpp
index 248ffbd556b75d76284639fddec49ad51716c563..d91be69e259899d094e07a6b764444c97db46b2f 100644
--- a/GUI/View/Fit/FitObjectiveBuilder.cpp
+++ b/GUI/View/Fit/FitObjectiveBuilder.cpp
@@ -75,7 +75,16 @@ std::unique_ptr<FitObjective> FitObjectiveBuilder::createFitObjective() const
         return buildSimulation(params);
     };
 
-    result->execAddSimulationAndData(builder, *createPowerfield(), nullptr, 1.0);
+    auto* realDataItem = m_jobItem->realDataItem();
+    ASSERT(realDataItem);
+
+    const DataItem* intensity_item = realDataItem->dataItem();
+    ASSERT(intensity_item);
+    ASSERT(intensity_item->getPowerfield());
+
+    std::unique_ptr<Powerfield<double>> data(intensity_item->getPowerfield()->clone());
+
+    result->execAddSimulationAndData(builder, *data, nullptr, 1.0);
 
     return result;
 }
@@ -111,19 +120,6 @@ FitObjectiveBuilder::buildSimulation(const mumufit::Parameters& params) const
         m_jobItem->sampleItem(), m_jobItem->instrumentItem(), m_jobItem->simulationOptionsItem());
 }
 
-std::unique_ptr<Powerfield<double>> FitObjectiveBuilder::createPowerfield() const
-{
-    auto* realDataItem = m_jobItem->realDataItem();
-    if (!realDataItem)
-        throw Error("FitObjectiveBuilder::createPowerfield() -> No Real Data defined.");
-
-    const DataItem* intensity_item = realDataItem->dataItem();
-    ASSERT(intensity_item);
-    ASSERT(intensity_item->getPowerfield());
-
-    return std::unique_ptr<Powerfield<double>>(intensity_item->getPowerfield()->clone());
-}
-
 void FitObjectiveBuilder::update_fit_parameters(const mumufit::Parameters& params) const
 {
     QVector<double> values = QVector<double>::fromStdVector(params.values());
diff --git a/GUI/View/Fit/FitObjectiveBuilder.h b/GUI/View/Fit/FitObjectiveBuilder.h
index 3993cb760dae5a32b10cfc00fec1d5736e58b9e1..72e433272e83dd9df7504712d8ed32ee82ac4bf8 100644
--- a/GUI/View/Fit/FitObjectiveBuilder.h
+++ b/GUI/View/Fit/FitObjectiveBuilder.h
@@ -51,7 +51,6 @@ private:
     JobItem* m_jobItem;
 
     std::unique_ptr<ISimulation> buildSimulation(const mumufit::Parameters& params) const;
-    std::unique_ptr<Powerfield<double>> createPowerfield() const;
 
     void update_fit_parameters(const mumufit::Parameters& params) const;
 
diff --git a/GUI/View/Loaders/QREDataLoader.cpp b/GUI/View/Loaders/QREDataLoader.cpp
index 0310bc9a1b030d19c7cf23989776ac5d3ef8523d..a180bcbc8993ac9b99ec4268c91893229b8bd7d7 100644
--- a/GUI/View/Loaders/QREDataLoader.cpp
+++ b/GUI/View/Loaders/QREDataLoader.cpp
@@ -262,7 +262,7 @@ void QREDataLoader::processContents()
 
     if (creationOfPowerfieldIsNecessary) {
         try {
-            createPowerfieldFromParsingResult(m_item);
+            powerfieldFromParsingResult(m_item);
         } catch (...) {
             m_importResult.error = "Import not successful - caught an exception.";
             invalidateItemData();
@@ -518,7 +518,7 @@ void QREDataLoader::calculateFromParseResult() const
     }
 }
 
-void QREDataLoader::createPowerfieldFromParsingResult(RealDataItem* item) const
+void QREDataLoader::powerfieldFromParsingResult(RealDataItem* item) const
 {
     // create data sorted by ascending Q values.
     // For this, the line numbers are sorted by Q
diff --git a/GUI/View/Loaders/QREDataLoader.h b/GUI/View/Loaders/QREDataLoader.h
index 89f355c972999ee43d721a6fdc86e3467e7976b2..e865e49f9397751f972ff118f084f8a47d302a0c 100644
--- a/GUI/View/Loaders/QREDataLoader.h
+++ b/GUI/View/Loaders/QREDataLoader.h
@@ -49,7 +49,7 @@ public:
 private:
     void parseFileContent() const;
     void calculateFromParseResult() const;
-    void createPowerfieldFromParsingResult(RealDataItem* item) const;
+    void powerfieldFromParsingResult(RealDataItem* item) const;
 
 private:
     enum class UnitInFile { none, perNanoMeter, perAngstrom, other };
diff --git a/Sim/Fitting/SimDataPair.cpp b/Sim/Fitting/SimDataPair.cpp
index 6bd9209eb7b83baf4d4f41311cba6d77b2f725ed..7beeb6e7f77ffc15a7bee8c5dc1fc1e687b1606d 100644
--- a/Sim/Fitting/SimDataPair.cpp
+++ b/Sim/Fitting/SimDataPair.cpp
@@ -58,7 +58,7 @@ bool haveSameSizes(const IDetector& detector, const Powerfield<double>& data)
 SimulationResult convertData(const ISimulation& simulation, const Powerfield<double>& data)
 {
     const ICoordSystem* coordSystem = simulation.createCoordSystem();
-    auto roi_data = coordSystem->createPowerfield(coordSystem->defaultUnits());
+    auto roi_data = std::make_unique<Powerfield<double>>(coordSystem->defaultAxes());
 
     if (roi_data->hasSameSizes(data)) {
         // data is already cropped to ROI
@@ -140,8 +140,7 @@ void SimDataPair::execSimulation(const mumufit::Parameters& params)
         m_uncertainties = convertData(*simulation, *m_raw_uncertainties);
     else {
         const ICoordSystem& converter = m_sim_data.converter();
-        std::unique_ptr<Powerfield<double>> dummy_array =
-            converter.createPowerfield(converter.defaultUnits());
+        auto dummy_array = std::make_unique<Powerfield<double>>(converter.defaultAxes());
         m_uncertainties = SimulationResult(*dummy_array, converter);
     }
 
diff --git a/auto/Wrap/doxygenDevice.i b/auto/Wrap/doxygenDevice.i
index cbdf7def5c1c0b9e784ab1fe10c35fc0ccd23cbe..66ecd4a48987b70c377c88305b00b7b0510a496a 100644
--- a/auto/Wrap/doxygenDevice.i
+++ b/auto/Wrap/doxygenDevice.i
@@ -876,11 +876,6 @@ C++ includes: ICoordSystem.h
 %feature("docstring")  ICoordSystem::clone "ICoordSystem* ICoordSystem::clone() const override=0
 ";
 
-%feature("docstring")  ICoordSystem::createPowerfield "std::unique_ptr< Powerfield< double > > ICoordSystem::createPowerfield(Coords units) const
-
-Returns zero-valued output data array in specified units. 
-";
-
 %feature("docstring")  ICoordSystem::rank "virtual size_t ICoordSystem::rank() const =0
 ";
 
@@ -905,6 +900,12 @@ Returns zero-valued output data array in specified units.
 %feature("docstring")  ICoordSystem::createConvertedAxis "virtual IAxis* ICoordSystem::createConvertedAxis(size_t i_axis, Coords units) const =0
 ";
 
+%feature("docstring")  ICoordSystem::defaultAxes "std::vector< IAxis * > ICoordSystem::defaultAxes() const
+";
+
+%feature("docstring")  ICoordSystem::convertedAxes "std::vector< IAxis * > ICoordSystem::convertedAxes(Coords units) const
+";
+
 %feature("docstring")  ICoordSystem::createConvertedData "Powerfield< double > * ICoordSystem::createConvertedData(const Powerfield< double > &data, Coords units) const
 
 Creates  Powerfield array in converter units.