diff --git a/Base/Axis/Frame.cpp b/Base/Axis/Frame.cpp
index f2e8e5dee129bab907b0ed420cbc654075df522d..38847e0d0f0350a154d937f563d12d442d1a50b7 100644
--- a/Base/Axis/Frame.cpp
+++ b/Base/Axis/Frame.cpp
@@ -13,24 +13,17 @@
 //  ************************************************************************************************
 
 #include "Base/Axis/Frame.h"
-#include "Base/Axis/FrameTrafo.h"
 #include "Base/Axis/FrameUtil.h"
 #include "Base/Axis/Scale.h"
 #include "Base/Util/Assert.h"
 #include "Base/Util/StringUtil.h"
 
-Frame::Frame(CloneableVector<const Scale> axes, CloneableVector<const FrameTrafo> trafos)
+Frame::Frame(CloneableVector<const Scale> axes)
     : m_axes(std::move(axes))
-    , m_trafos(std::move(trafos))
     , m_size(FrameUtil::product_size(m_axes.reference()))
 {
 }
 
-Frame::Frame(CloneableVector<const Scale> axes)
-    : Frame(axes, {})
-{
-}
-
 Frame::Frame(const Scale* ax0)
     : Frame(std::vector<const Scale*>{ax0})
 {
@@ -56,20 +49,6 @@ void Frame::setAxes(CloneableVector<const Scale> axes)
     m_size = FrameUtil::product_size(m_axes.reference());
 }
 
-void Frame::addTrafo(FrameTrafo* trafo)
-{
-    m_trafos.emplace_back(trafo);
-}
-
-const FrameTrafo& Frame::findTrafo(const std::string& name) const
-{
-    for (const FrameTrafo* trafo : m_trafos)
-        if (trafo->name == name)
-            return *trafo;
-    throw std::runtime_error("Requested unavailable trafo '" + name
-                             + "' ; available: " + Base::String::join(availableTrafos(), ", "));
-}
-
 size_t Frame::rank() const
 {
     return m_axes.size();
@@ -168,14 +147,6 @@ bool Frame::hasSameSizes(const Frame& o) const
     return true;
 }
 
-std::vector<std::string> Frame::availableTrafos() const
-{
-    std::vector<std::string> result;
-    for (const FrameTrafo* trafo : m_trafos)
-        result.push_back(trafo->name);
-    return result;
-}
-
 Frame* Frame::plottableFrame() const
 {
     std::vector<const Scale*> outaxes;
@@ -186,18 +157,6 @@ Frame* Frame::plottableFrame() const
     return new Frame(std::move(outaxes));
 }
 
-Frame* Frame::transformedFrame(const std::string& key) const
-{
-    const FrameTrafo& trafo = findTrafo(key);
-    ASSERT(trafo.coords.size() == rank());
-    std::vector<const Scale*> outaxes;
-    for (size_t k = 0; k < rank(); ++k) {
-        Scale* s = new Scale(axis(k).transformedScale(trafo.coords[k].label(), trafo.axTrafos[k]));
-        outaxes.emplace_back(s);
-    }
-    return new Frame(std::move(outaxes));
-}
-
 Frame* Frame::flat() const
 {
     std::vector<const Scale*> outaxes;
diff --git a/Base/Axis/Frame.h b/Base/Axis/Frame.h
index 2121a0e9b9aee9832aad64a1b1e9e902420ba8c1..58215319a14f5813120285e8be8b43883e65c677 100644
--- a/Base/Axis/Frame.h
+++ b/Base/Axis/Frame.h
@@ -20,7 +20,6 @@
 
 using std::size_t;
 
-class FrameTrafo;
 class Scale;
 
 //! Holds one or two axes.
@@ -28,7 +27,6 @@ class Scale;
 class Frame {
 public:
     //! Constructor that takes ownership of supplied axes.
-    Frame(CloneableVector<const Scale> axes, CloneableVector<const FrameTrafo> trafos);
     Frame(CloneableVector<const Scale> axes);
     Frame(const Scale* ax0);
     Frame(const Scale* ax0, const Scale* ax1);
@@ -37,8 +35,6 @@ public:
 
     void setAxes(CloneableVector<const Scale> axes);
 
-    void addTrafo(FrameTrafo* trafo);
-
     Frame* clone() const;
 
     //! Returns number of dimensions.
@@ -84,21 +80,15 @@ public:
     bool operator==(const Frame&) const;
 
     Frame* plottableFrame() const;
-    Frame* transformedFrame(const std::string& key) const;
     Frame* flat() const;
 
-    std::vector<std::string> availableTrafos() const;
-
 #ifndef SWIG
     std::vector<const Scale*> clonedAxes() const;
 
 private:
     CloneableVector<const Scale> m_axes;
-    CloneableVector<const FrameTrafo> m_trafos;
     size_t m_size; // cached product of axis sizes
-
-    const FrameTrafo& findTrafo(const std::string& name) const;
-#endif // SWIG
+#endif             // SWIG
 };
 
 #endif // BORNAGAIN_BASE_AXIS_FRAME_H
diff --git a/Base/Axis/FrameTrafo.cpp b/Base/Axis/FrameTrafo.cpp
deleted file mode 100644
index 98e7dfdab146c0f224854443532631142618dbb4..0000000000000000000000000000000000000000
--- a/Base/Axis/FrameTrafo.cpp
+++ /dev/null
@@ -1,23 +0,0 @@
-//  ************************************************************************************************
-//
-//  BornAgain: simulate and fit reflection and scattering
-//
-//! @file      Base/Axis/FrameTrafo.cpp
-//! @brief     Implements class FrameTrafo.
-//!
-//! @homepage  http://www.bornagainproject.org
-//! @license   GNU General Public License v3 or higher (see COPYING)
-//! @copyright Forschungszentrum Jülich GmbH 2018
-//! @authors   Scientific Computing Group at MLZ (see CITATION, AUTHORS)
-//
-//  ************************************************************************************************
-
-#include "Base/Axis/FrameTrafo.h"
-#include "Base/Axis/Coordinate.h"
-
-FrameTrafo::~FrameTrafo() = default;
-
-FrameTrafo* FrameTrafo::clone() const
-{
-    return new FrameTrafo(*this);
-}
diff --git a/Base/Axis/FrameTrafo.h b/Base/Axis/FrameTrafo.h
deleted file mode 100644
index 051013b9ac5ff03822336edc88563f60c6c68679..0000000000000000000000000000000000000000
--- a/Base/Axis/FrameTrafo.h
+++ /dev/null
@@ -1,38 +0,0 @@
-//  ************************************************************************************************
-//
-//  BornAgain: simulate and fit reflection and scattering
-//
-//! @file      Base/Axis/FrameTrafo.h
-//! @brief     Defines class FrameTrafo.
-//!
-//! @homepage  http://www.bornagainproject.org
-//! @license   GNU General Public License v3 or higher (see COPYING)
-//! @copyright Forschungszentrum Jülich GmbH 2018
-//! @authors   Scientific Computing Group at MLZ (see CITATION, AUTHORS)
-//
-//  ************************************************************************************************
-
-#ifndef BORNAGAIN_BASE_AXIS_FRAMETRAFO_H
-#define BORNAGAIN_BASE_AXIS_FRAMETRAFO_H
-
-#include <functional>
-#include <string>
-#include <vector>
-
-class Coordinate;
-
-using trafo_t = std::function<double(double)>;
-
-//! One specific transform of frame coordinates.
-
-class FrameTrafo {
-public:
-    ~FrameTrafo();
-    FrameTrafo* clone() const;
-    std::string name;
-    std::vector<Coordinate> coords;
-    std::vector<trafo_t> axTrafos;
-    bool xMirror{false};
-};
-
-#endif // BORNAGAIN_BASE_AXIS_FRAMETRAFO_H
diff --git a/Device/Data/Datafield.cpp b/Device/Data/Datafield.cpp
index e6ccba1caadcfa42f8c8f543c7aa81ede36becfb..08038dc68f1140db86514f46b4784b73a4334790 100644
--- a/Device/Data/Datafield.cpp
+++ b/Device/Data/Datafield.cpp
@@ -14,7 +14,6 @@
 
 #include "Device/Data/Datafield.h"
 #include "Base/Axis/Frame.h"
-#include "Base/Axis/FrameTrafo.h"
 #include "Base/Axis/Scale.h"
 #include "Base/Util/Assert.h"
 #include <algorithm>
@@ -377,11 +376,6 @@ Datafield Datafield::plottableField() const
     return {title(), frame().plottableFrame(), m_values, m_errSigmas};
 }
 
-Datafield Datafield::transformedField(const std::string& key) const
-{
-    return {title(), frame().transformedFrame(key), m_values, m_errSigmas};
-}
-
 Datafield Datafield::flat() const
 {
     return {title(), frame().flat(), m_values, m_errSigmas};
diff --git a/Device/Data/Datafield.h b/Device/Data/Datafield.h
index f52e30f47892cf26fe0c142cffedb063124397f7..827e618114a66a78c0220f79b7c086d9a851b1a8 100644
--- a/Device/Data/Datafield.h
+++ b/Device/Data/Datafield.h
@@ -90,7 +90,6 @@ public:
     //... modifiers
 
     Datafield plottableField() const;
-    Datafield transformedField(const std::string& label) const;
     Datafield flat() const;
     Datafield noisy(double prefactor, double minimum) const;
 
diff --git a/Device/Detector/FlatDetector.cpp b/Device/Detector/FlatDetector.cpp
index e5d248cc05bbb6926559060f63788eb56a92a79d..d514d73ed426d11477ee39b236a697f89ca159dc 100644
--- a/Device/Detector/FlatDetector.cpp
+++ b/Device/Detector/FlatDetector.cpp
@@ -14,7 +14,6 @@
 
 #include "Device/Detector/FlatDetector.h"
 #include "Base/Axis/Frame.h"
-#include "Base/Axis/FrameTrafo.h"
 #include "Base/Axis/MakeScale.h"
 #include "Base/Axis/Scale.h"
 #include "Base/Const/Units.h"
diff --git a/Wrap/Swig/libBornAgainBase.i b/Wrap/Swig/libBornAgainBase.i
index 74c0d61f29278245f756e7d0df7c1d023acfeeee..d0f3842e9fc9e80738bbd83a3152e3c939ca330d 100644
--- a/Wrap/Swig/libBornAgainBase.i
+++ b/Wrap/Swig/libBornAgainBase.i
@@ -20,7 +20,6 @@
 #include <heinz/Complex.h>
 #include "Base/Axis/Bin.h"
 #include "Base/Axis/Frame.h"
-#include "Base/Axis/FrameTrafo.h"
 #include "Base/Axis/Scale.h"
 #include "Base/Axis/MakeScale.h"
 #include "Base/Const/Units.h"
diff --git a/auto/Examples/scatter2d/DodecahedraSAS.py b/auto/Examples/scatter2d/DodecahedraSAS.py
index ff986ee2c570f60c72f58c5b6ee778d32346be63..f5a7179ddce8106ecd11da646c7e8b5cee23073d 100755
--- a/auto/Examples/scatter2d/DodecahedraSAS.py
+++ b/auto/Examples/scatter2d/DodecahedraSAS.py
@@ -47,4 +47,4 @@ if __name__ == '__main__':
     sample = get_sample()
     simulation = get_simulation(sample)
     result = simulation.simulate()
-    bp.plot_simulation_result(result.transformedField("u,v (mm)"))
+    bp.plot_simulation_result(result)
diff --git a/auto/MiniExamples/scatter2d/DodecahedraSAS.py b/auto/MiniExamples/scatter2d/DodecahedraSAS.py
index b491a6a67af21345fee5026ae776d30d574e982c..cc237d065b401817249874de8ce1b49917d1aa12 100755
--- a/auto/MiniExamples/scatter2d/DodecahedraSAS.py
+++ b/auto/MiniExamples/scatter2d/DodecahedraSAS.py
@@ -47,4 +47,4 @@ if __name__ == '__main__':
     sample = get_sample()
     simulation = get_simulation(sample)
     result = simulation.simulate()
-    bp.plot_simulation_result(result.transformedField("u,v (mm)"))
+    bp.plot_simulation_result(result)
diff --git a/auto/Wrap/libBornAgainBase.py b/auto/Wrap/libBornAgainBase.py
index e3fd98284681bbc2403535f7380ac6593111e1b0..f8a3e57aa1685bc08085b59a5f2f356536326ca0 100644
--- a/auto/Wrap/libBornAgainBase.py
+++ b/auto/Wrap/libBornAgainBase.py
@@ -1988,7 +1988,6 @@ class Frame(object):
 
     def __init__(self, *args):
         r"""
-        __init__(Frame self, CloneableVector< Scale const > axes, CloneableVector< FrameTrafo const > trafos) -> Frame
         __init__(Frame self, CloneableVector< Scale const > axes) -> Frame
         __init__(Frame self, Scale ax0) -> Frame
         __init__(Frame self, Scale ax0, Scale ax1) -> Frame
@@ -2001,10 +2000,6 @@ class Frame(object):
         r"""setAxes(Frame self, CloneableVector< Scale const > axes)"""
         return _libBornAgainBase.Frame_setAxes(self, axes)
 
-    def addTrafo(self, trafo):
-        r"""addTrafo(Frame self, FrameTrafo * trafo)"""
-        return _libBornAgainBase.Frame_addTrafo(self, trafo)
-
     def clone(self):
         r"""clone(Frame self) -> Frame"""
         return _libBornAgainBase.Frame_clone(self)
@@ -2061,18 +2056,10 @@ class Frame(object):
         r"""plottableFrame(Frame self) -> Frame"""
         return _libBornAgainBase.Frame_plottableFrame(self)
 
-    def transformedFrame(self, key):
-        r"""transformedFrame(Frame self, std::string const & key) -> Frame"""
-        return _libBornAgainBase.Frame_transformedFrame(self, key)
-
     def flat(self):
         r"""flat(Frame self) -> Frame"""
         return _libBornAgainBase.Frame_flat(self)
 
-    def availableTrafos(self):
-        r"""availableTrafos(Frame self) -> vector_string_t"""
-        return _libBornAgainBase.Frame_availableTrafos(self)
-
 # Register Frame in _libBornAgainBase:
 _libBornAgainBase.Frame_swigregister(Frame)
 class R3(object):
diff --git a/auto/Wrap/libBornAgainBase_wrap.cpp b/auto/Wrap/libBornAgainBase_wrap.cpp
index c2729a62fbc30cc49651a46cfa0005dd2d5bb95a..dcacda6c519b5258a6ea912c9bb50211c63dbc33 100644
--- a/auto/Wrap/libBornAgainBase_wrap.cpp
+++ b/auto/Wrap/libBornAgainBase_wrap.cpp
@@ -3387,67 +3387,65 @@ namespace Swig {
 /* -------- TYPES TABLE (BEGIN) -------- */
 
 #define SWIGTYPE_p_Bin1D swig_types[0]
-#define SWIGTYPE_p_CloneableVectorT_FrameTrafo_const_t swig_types[1]
-#define SWIGTYPE_p_CloneableVectorT_Scale_const_t swig_types[2]
-#define SWIGTYPE_p_Coordinate swig_types[3]
-#define SWIGTYPE_p_Frame swig_types[4]
-#define SWIGTYPE_p_FrameTrafo swig_types[5]
-#define SWIGTYPE_p_ICloneable swig_types[6]
-#define SWIGTYPE_p_Rotation3DT_double_t swig_types[7]
-#define SWIGTYPE_p_Scale swig_types[8]
-#define SWIGTYPE_p_Span swig_types[9]
-#define SWIGTYPE_p_ThreadInfo swig_types[10]
-#define SWIGTYPE_p_Vec3T_double_t swig_types[11]
-#define SWIGTYPE_p_Vec3T_int_t swig_types[12]
-#define SWIGTYPE_p_Vec3T_std__complexT_double_t_t swig_types[13]
-#define SWIGTYPE_p_allocator_type swig_types[14]
-#define SWIGTYPE_p_char swig_types[15]
-#define SWIGTYPE_p_difference_type swig_types[16]
-#define SWIGTYPE_p_first_type swig_types[17]
-#define SWIGTYPE_p_int swig_types[18]
-#define SWIGTYPE_p_key_type swig_types[19]
-#define SWIGTYPE_p_long_long swig_types[20]
-#define SWIGTYPE_p_mapped_type swig_types[21]
-#define SWIGTYPE_p_p_PyObject swig_types[22]
-#define SWIGTYPE_p_second_type swig_types[23]
-#define SWIGTYPE_p_short swig_types[24]
-#define SWIGTYPE_p_signed_char swig_types[25]
-#define SWIGTYPE_p_size_type swig_types[26]
-#define SWIGTYPE_p_std__allocatorT_double_t swig_types[27]
-#define SWIGTYPE_p_std__allocatorT_int_t swig_types[28]
-#define SWIGTYPE_p_std__allocatorT_std__complexT_double_t_t swig_types[29]
-#define SWIGTYPE_p_std__allocatorT_std__pairT_double_double_t_t swig_types[30]
-#define SWIGTYPE_p_std__allocatorT_std__pairT_std__string_const_double_t_t swig_types[31]
-#define SWIGTYPE_p_std__allocatorT_std__string_t swig_types[32]
-#define SWIGTYPE_p_std__allocatorT_std__vectorT_double_std__allocatorT_double_t_t_t swig_types[33]
-#define SWIGTYPE_p_std__allocatorT_std__vectorT_int_std__allocatorT_int_t_t_t swig_types[34]
-#define SWIGTYPE_p_std__allocatorT_unsigned_long_t swig_types[35]
-#define SWIGTYPE_p_std__complexT_double_t swig_types[36]
-#define SWIGTYPE_p_std__functionT_double_fdoubleF_t swig_types[37]
-#define SWIGTYPE_p_std__invalid_argument swig_types[38]
-#define SWIGTYPE_p_std__lessT_std__string_t swig_types[39]
-#define SWIGTYPE_p_std__mapT_std__string_double_std__lessT_std__string_t_std__allocatorT_std__pairT_std__string_const_double_t_t_t swig_types[40]
-#define SWIGTYPE_p_std__optionalT_Bin1D_t swig_types[41]
-#define SWIGTYPE_p_std__pairT_double_double_t swig_types[42]
-#define SWIGTYPE_p_std__vectorT_Bin1D_std__allocatorT_Bin1D_t_t swig_types[43]
-#define SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t swig_types[44]
-#define SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t swig_types[45]
-#define SWIGTYPE_p_std__vectorT_std__complexT_double_t_std__allocatorT_std__complexT_double_t_t_t swig_types[46]
-#define SWIGTYPE_p_std__vectorT_std__pairT_double_double_t_std__allocatorT_std__pairT_double_double_t_t_t swig_types[47]
-#define SWIGTYPE_p_std__vectorT_std__pairT_std__string_std__functionT_double_fdoubleF_t_t_std__allocatorT_std__pairT_std__string_std__functionT_double_fdoubleF_t_t_t_t swig_types[48]
-#define SWIGTYPE_p_std__vectorT_std__string_std__allocatorT_std__string_t_t swig_types[49]
-#define SWIGTYPE_p_std__vectorT_std__vectorT_double_std__allocatorT_double_t_t_std__allocatorT_std__vectorT_double_std__allocatorT_double_t_t_t_t swig_types[50]
-#define SWIGTYPE_p_std__vectorT_std__vectorT_int_std__allocatorT_int_t_t_std__allocatorT_std__vectorT_int_std__allocatorT_int_t_t_t_t swig_types[51]
-#define SWIGTYPE_p_std__vectorT_unsigned_int_std__allocatorT_unsigned_int_t_t swig_types[52]
-#define SWIGTYPE_p_std__vectorT_unsigned_long_std__allocatorT_unsigned_long_t_t swig_types[53]
-#define SWIGTYPE_p_swig__SwigPyIterator swig_types[54]
-#define SWIGTYPE_p_unsigned_char swig_types[55]
-#define SWIGTYPE_p_unsigned_int swig_types[56]
-#define SWIGTYPE_p_unsigned_long_long swig_types[57]
-#define SWIGTYPE_p_unsigned_short swig_types[58]
-#define SWIGTYPE_p_value_type swig_types[59]
-static swig_type_info *swig_types[61];
-static swig_module_info swig_module = {swig_types, 60, 0, 0, 0, 0};
+#define SWIGTYPE_p_CloneableVectorT_Scale_const_t swig_types[1]
+#define SWIGTYPE_p_Coordinate swig_types[2]
+#define SWIGTYPE_p_Frame swig_types[3]
+#define SWIGTYPE_p_ICloneable swig_types[4]
+#define SWIGTYPE_p_Rotation3DT_double_t swig_types[5]
+#define SWIGTYPE_p_Scale swig_types[6]
+#define SWIGTYPE_p_Span swig_types[7]
+#define SWIGTYPE_p_ThreadInfo swig_types[8]
+#define SWIGTYPE_p_Vec3T_double_t swig_types[9]
+#define SWIGTYPE_p_Vec3T_int_t swig_types[10]
+#define SWIGTYPE_p_Vec3T_std__complexT_double_t_t swig_types[11]
+#define SWIGTYPE_p_allocator_type swig_types[12]
+#define SWIGTYPE_p_char swig_types[13]
+#define SWIGTYPE_p_difference_type swig_types[14]
+#define SWIGTYPE_p_first_type swig_types[15]
+#define SWIGTYPE_p_int swig_types[16]
+#define SWIGTYPE_p_key_type swig_types[17]
+#define SWIGTYPE_p_long_long swig_types[18]
+#define SWIGTYPE_p_mapped_type swig_types[19]
+#define SWIGTYPE_p_p_PyObject swig_types[20]
+#define SWIGTYPE_p_second_type swig_types[21]
+#define SWIGTYPE_p_short swig_types[22]
+#define SWIGTYPE_p_signed_char swig_types[23]
+#define SWIGTYPE_p_size_type swig_types[24]
+#define SWIGTYPE_p_std__allocatorT_double_t swig_types[25]
+#define SWIGTYPE_p_std__allocatorT_int_t swig_types[26]
+#define SWIGTYPE_p_std__allocatorT_std__complexT_double_t_t swig_types[27]
+#define SWIGTYPE_p_std__allocatorT_std__pairT_double_double_t_t swig_types[28]
+#define SWIGTYPE_p_std__allocatorT_std__pairT_std__string_const_double_t_t swig_types[29]
+#define SWIGTYPE_p_std__allocatorT_std__string_t swig_types[30]
+#define SWIGTYPE_p_std__allocatorT_std__vectorT_double_std__allocatorT_double_t_t_t swig_types[31]
+#define SWIGTYPE_p_std__allocatorT_std__vectorT_int_std__allocatorT_int_t_t_t swig_types[32]
+#define SWIGTYPE_p_std__allocatorT_unsigned_long_t swig_types[33]
+#define SWIGTYPE_p_std__complexT_double_t swig_types[34]
+#define SWIGTYPE_p_std__functionT_double_fdoubleF_t swig_types[35]
+#define SWIGTYPE_p_std__invalid_argument swig_types[36]
+#define SWIGTYPE_p_std__lessT_std__string_t swig_types[37]
+#define SWIGTYPE_p_std__mapT_std__string_double_std__lessT_std__string_t_std__allocatorT_std__pairT_std__string_const_double_t_t_t swig_types[38]
+#define SWIGTYPE_p_std__optionalT_Bin1D_t swig_types[39]
+#define SWIGTYPE_p_std__pairT_double_double_t swig_types[40]
+#define SWIGTYPE_p_std__vectorT_Bin1D_std__allocatorT_Bin1D_t_t swig_types[41]
+#define SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t swig_types[42]
+#define SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t swig_types[43]
+#define SWIGTYPE_p_std__vectorT_std__complexT_double_t_std__allocatorT_std__complexT_double_t_t_t swig_types[44]
+#define SWIGTYPE_p_std__vectorT_std__pairT_double_double_t_std__allocatorT_std__pairT_double_double_t_t_t swig_types[45]
+#define SWIGTYPE_p_std__vectorT_std__pairT_std__string_std__functionT_double_fdoubleF_t_t_std__allocatorT_std__pairT_std__string_std__functionT_double_fdoubleF_t_t_t_t swig_types[46]
+#define SWIGTYPE_p_std__vectorT_std__string_std__allocatorT_std__string_t_t swig_types[47]
+#define SWIGTYPE_p_std__vectorT_std__vectorT_double_std__allocatorT_double_t_t_std__allocatorT_std__vectorT_double_std__allocatorT_double_t_t_t_t swig_types[48]
+#define SWIGTYPE_p_std__vectorT_std__vectorT_int_std__allocatorT_int_t_t_std__allocatorT_std__vectorT_int_std__allocatorT_int_t_t_t_t swig_types[49]
+#define SWIGTYPE_p_std__vectorT_unsigned_int_std__allocatorT_unsigned_int_t_t swig_types[50]
+#define SWIGTYPE_p_std__vectorT_unsigned_long_std__allocatorT_unsigned_long_t_t swig_types[51]
+#define SWIGTYPE_p_swig__SwigPyIterator swig_types[52]
+#define SWIGTYPE_p_unsigned_char swig_types[53]
+#define SWIGTYPE_p_unsigned_int swig_types[54]
+#define SWIGTYPE_p_unsigned_long_long swig_types[55]
+#define SWIGTYPE_p_unsigned_short swig_types[56]
+#define SWIGTYPE_p_value_type swig_types[57]
+static swig_type_info *swig_types[59];
+static swig_module_info swig_module = {swig_types, 58, 0, 0, 0, 0};
 #define SWIG_TypeQuery(name) SWIG_TypeQueryModule(&swig_module, &swig_module, name)
 #define SWIG_MangledTypeQuery(name) SWIG_MangledTypeQueryModule(&swig_module, &swig_module, name)
 
@@ -6990,7 +6988,6 @@ SWIGINTERN void std_vector_Sl_std_pair_Sl_double_Sc_double_Sg__Sg__insert__SWIG_
 #include <heinz/Complex.h>
 #include "Base/Axis/Bin.h"
 #include "Base/Axis/Frame.h"
-#include "Base/Axis/FrameTrafo.h"
 #include "Base/Axis/Scale.h"
 #include "Base/Axis/MakeScale.h"
 #include "Base/Const/Units.h"
@@ -27199,61 +27196,6 @@ fail:
 
 
 SWIGINTERN PyObject *_wrap_new_Frame__SWIG_0(PyObject *self, Py_ssize_t nobjs, PyObject **swig_obj) {
-  PyObject *resultobj = 0;
-  SwigValueWrapper< CloneableVector< Scale const > > arg1 ;
-  SwigValueWrapper< CloneableVector< FrameTrafo const > > arg2 ;
-  void *argp1 ;
-  int res1 = 0 ;
-  void *argp2 ;
-  int res2 = 0 ;
-  Frame *result = 0 ;
-  
-  if ((nobjs < 2) || (nobjs > 2)) SWIG_fail;
-  {
-    res1 = SWIG_ConvertPtr(swig_obj[0], &argp1, SWIGTYPE_p_CloneableVectorT_Scale_const_t,  0  | 0);
-    if (!SWIG_IsOK(res1)) {
-      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Frame" "', argument " "1"" of type '" "CloneableVector< Scale const >""'"); 
-    }  
-    if (!argp1) {
-      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Frame" "', argument " "1"" of type '" "CloneableVector< Scale const >""'");
-    } else {
-      CloneableVector< Scale const > * temp = reinterpret_cast< CloneableVector< Scale const > * >(argp1);
-      arg1 = *temp;
-      if (SWIG_IsNewObj(res1)) delete temp;
-    }
-  }
-  {
-    res2 = SWIG_ConvertPtr(swig_obj[1], &argp2, SWIGTYPE_p_CloneableVectorT_FrameTrafo_const_t,  0  | 0);
-    if (!SWIG_IsOK(res2)) {
-      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "new_Frame" "', argument " "2"" of type '" "CloneableVector< FrameTrafo const >""'"); 
-    }  
-    if (!argp2) {
-      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Frame" "', argument " "2"" of type '" "CloneableVector< FrameTrafo const >""'");
-    } else {
-      CloneableVector< FrameTrafo const > * temp = reinterpret_cast< CloneableVector< FrameTrafo const > * >(argp2);
-      arg2 = *temp;
-      if (SWIG_IsNewObj(res2)) delete temp;
-    }
-  }
-  {
-    try {
-      result = (Frame *)new Frame(arg1,arg2);
-    } catch (const std::exception& ex) {
-      // message shown in the Python interpreter
-      const std::string msg {
-        "BornAgain C++ Exception: " + std::string(ex.what())
-      };
-      SWIG_exception(SWIG_RuntimeError, msg.c_str());
-    }
-  }
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Frame, SWIG_POINTER_NEW |  0 );
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_new_Frame__SWIG_1(PyObject *self, Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   SwigValueWrapper< CloneableVector< Scale const > > arg1 ;
   void *argp1 ;
@@ -27292,7 +27234,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_new_Frame__SWIG_2(PyObject *self, Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_new_Frame__SWIG_1(PyObject *self, Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   Scale *arg1 = (Scale *) 0 ;
   void *argp1 = 0 ;
@@ -27323,7 +27265,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_new_Frame__SWIG_3(PyObject *self, Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_new_Frame__SWIG_2(PyObject *self, Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   Scale *arg1 = (Scale *) 0 ;
   Scale *arg2 = (Scale *) 0 ;
@@ -27362,7 +27304,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_new_Frame__SWIG_4(PyObject *self, Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_new_Frame__SWIG_3(PyObject *self, Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   Frame *arg1 = 0 ;
   void *argp1 = 0 ;
@@ -27409,7 +27351,7 @@ SWIGINTERN PyObject *_wrap_new_Frame(PyObject *self, PyObject *args) {
     int res = SWIG_ConvertPtr(argv[0], 0, SWIGTYPE_p_CloneableVectorT_Scale_const_t, SWIG_POINTER_NO_NULL | 0);
     _v = SWIG_CheckState(res);
     if (_v) {
-      return _wrap_new_Frame__SWIG_1(self, argc, argv);
+      return _wrap_new_Frame__SWIG_0(self, argc, argv);
     }
   }
   if (argc == 1) {
@@ -27418,7 +27360,7 @@ SWIGINTERN PyObject *_wrap_new_Frame(PyObject *self, PyObject *args) {
     int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_Scale, 0);
     _v = SWIG_CheckState(res);
     if (_v) {
-      return _wrap_new_Frame__SWIG_2(self, argc, argv);
+      return _wrap_new_Frame__SWIG_1(self, argc, argv);
     }
   }
   if (argc == 1) {
@@ -27426,7 +27368,7 @@ SWIGINTERN PyObject *_wrap_new_Frame(PyObject *self, PyObject *args) {
     int res = SWIG_ConvertPtr(argv[0], 0, SWIGTYPE_p_Frame, SWIG_POINTER_NO_NULL | 0);
     _v = SWIG_CheckState(res);
     if (_v) {
-      return _wrap_new_Frame__SWIG_4(self, argc, argv);
+      return _wrap_new_Frame__SWIG_3(self, argc, argv);
     }
   }
   if (argc == 2) {
@@ -27439,19 +27381,7 @@ SWIGINTERN PyObject *_wrap_new_Frame(PyObject *self, PyObject *args) {
       int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_Scale, 0);
       _v = SWIG_CheckState(res);
       if (_v) {
-        return _wrap_new_Frame__SWIG_3(self, argc, argv);
-      }
-    }
-  }
-  if (argc == 2) {
-    int _v = 0;
-    int res = SWIG_ConvertPtr(argv[0], 0, SWIGTYPE_p_CloneableVectorT_Scale_const_t, SWIG_POINTER_NO_NULL | 0);
-    _v = SWIG_CheckState(res);
-    if (_v) {
-      int res = SWIG_ConvertPtr(argv[1], 0, SWIGTYPE_p_CloneableVectorT_FrameTrafo_const_t, SWIG_POINTER_NO_NULL | 0);
-      _v = SWIG_CheckState(res);
-      if (_v) {
-        return _wrap_new_Frame__SWIG_0(self, argc, argv);
+        return _wrap_new_Frame__SWIG_2(self, argc, argv);
       }
     }
   }
@@ -27459,7 +27389,6 @@ SWIGINTERN PyObject *_wrap_new_Frame(PyObject *self, PyObject *args) {
 fail:
   SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'new_Frame'.\n"
     "  Possible C/C++ prototypes are:\n"
-    "    Frame::Frame(CloneableVector< Scale const >,CloneableVector< FrameTrafo const >)\n"
     "    Frame::Frame(CloneableVector< Scale const >)\n"
     "    Frame::Frame(Scale const *)\n"
     "    Frame::Frame(Scale const *,Scale const *)\n"
@@ -27547,45 +27476,6 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_Frame_addTrafo(PyObject *self, PyObject *args) {
-  PyObject *resultobj = 0;
-  Frame *arg1 = (Frame *) 0 ;
-  FrameTrafo *arg2 = (FrameTrafo *) 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  void *argp2 = 0 ;
-  int res2 = 0 ;
-  PyObject *swig_obj[2] ;
-  
-  if (!SWIG_Python_UnpackTuple(args, "Frame_addTrafo", 2, 2, swig_obj)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_Frame, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Frame_addTrafo" "', argument " "1"" of type '" "Frame *""'"); 
-  }
-  arg1 = reinterpret_cast< Frame * >(argp1);
-  res2 = SWIG_ConvertPtr(swig_obj[1], &argp2,SWIGTYPE_p_FrameTrafo, 0 |  0 );
-  if (!SWIG_IsOK(res2)) {
-    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Frame_addTrafo" "', argument " "2"" of type '" "FrameTrafo *""'"); 
-  }
-  arg2 = reinterpret_cast< FrameTrafo * >(argp2);
-  {
-    try {
-      (arg1)->addTrafo(arg2);
-    } catch (const std::exception& ex) {
-      // message shown in the Python interpreter
-      const std::string msg {
-        "BornAgain C++ Exception: " + std::string(ex.what())
-      };
-      SWIG_exception(SWIG_RuntimeError, msg.c_str());
-    }
-  }
-  resultobj = SWIG_Py_Void();
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
 SWIGINTERN PyObject *_wrap_Frame_clone(PyObject *self, PyObject *args) {
   PyObject *resultobj = 0;
   Frame *arg1 = (Frame *) 0 ;
@@ -28131,53 +28021,6 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_Frame_transformedFrame(PyObject *self, PyObject *args) {
-  PyObject *resultobj = 0;
-  Frame *arg1 = (Frame *) 0 ;
-  std::string *arg2 = 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  int res2 = SWIG_OLDOBJ ;
-  PyObject *swig_obj[2] ;
-  Frame *result = 0 ;
-  
-  if (!SWIG_Python_UnpackTuple(args, "Frame_transformedFrame", 2, 2, swig_obj)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_Frame, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Frame_transformedFrame" "', argument " "1"" of type '" "Frame const *""'"); 
-  }
-  arg1 = reinterpret_cast< Frame * >(argp1);
-  {
-    std::string *ptr = (std::string *)0;
-    res2 = SWIG_AsPtr_std_string(swig_obj[1], &ptr);
-    if (!SWIG_IsOK(res2)) {
-      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Frame_transformedFrame" "', argument " "2"" of type '" "std::string const &""'"); 
-    }
-    if (!ptr) {
-      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Frame_transformedFrame" "', argument " "2"" of type '" "std::string const &""'"); 
-    }
-    arg2 = ptr;
-  }
-  {
-    try {
-      result = (Frame *)((Frame const *)arg1)->transformedFrame((std::string const &)*arg2);
-    } catch (const std::exception& ex) {
-      // message shown in the Python interpreter
-      const std::string msg {
-        "BornAgain C++ Exception: " + std::string(ex.what())
-      };
-      SWIG_exception(SWIG_RuntimeError, msg.c_str());
-    }
-  }
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Frame, 0 |  0 );
-  if (SWIG_IsNewObj(res2)) delete arg2;
-  return resultobj;
-fail:
-  if (SWIG_IsNewObj(res2)) delete arg2;
-  return NULL;
-}
-
-
 SWIGINTERN PyObject *_wrap_Frame_flat(PyObject *self, PyObject *args) {
   PyObject *resultobj = 0;
   Frame *arg1 = (Frame *) 0 ;
@@ -28211,39 +28054,6 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_Frame_availableTrafos(PyObject *self, PyObject *args) {
-  PyObject *resultobj = 0;
-  Frame *arg1 = (Frame *) 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject *swig_obj[1] ;
-  std::vector< std::string,std::allocator< std::string > > result;
-  
-  if (!args) SWIG_fail;
-  swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_Frame, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Frame_availableTrafos" "', argument " "1"" of type '" "Frame const *""'"); 
-  }
-  arg1 = reinterpret_cast< Frame * >(argp1);
-  {
-    try {
-      result = ((Frame const *)arg1)->availableTrafos();
-    } catch (const std::exception& ex) {
-      // message shown in the Python interpreter
-      const std::string msg {
-        "BornAgain C++ Exception: " + std::string(ex.what())
-      };
-      SWIG_exception(SWIG_RuntimeError, msg.c_str());
-    }
-  }
-  resultobj = swig::from(static_cast< std::vector< std::string,std::allocator< std::string > > >(result));
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
 SWIGINTERN PyObject *Frame_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
   if (!SWIG_Python_UnpackTuple(args, "swigregister", 1, 1, &obj)) return NULL;
@@ -30782,7 +30592,6 @@ static PyMethodDef SwigMethods[] = {
 	 { "EquiDivision", _wrap_EquiDivision, METH_VARARGS, "EquiDivision(std::string name, size_t N, double start, double end) -> Scale"},
 	 { "EquiScan", _wrap_EquiScan, METH_VARARGS, "EquiScan(std::string name, size_t N, double start, double end) -> Scale"},
 	 { "new_Frame", _wrap_new_Frame, METH_VARARGS, "\n"
-		"Frame(CloneableVector< Scale const > axes, CloneableVector< FrameTrafo const > trafos)\n"
 		"Frame(CloneableVector< Scale const > axes)\n"
 		"Frame(Scale ax0)\n"
 		"Frame(Scale ax0, Scale ax1)\n"
@@ -30790,7 +30599,6 @@ static PyMethodDef SwigMethods[] = {
 		""},
 	 { "delete_Frame", _wrap_delete_Frame, METH_O, "delete_Frame(Frame self)"},
 	 { "Frame_setAxes", _wrap_Frame_setAxes, METH_VARARGS, "Frame_setAxes(Frame self, CloneableVector< Scale const > axes)"},
-	 { "Frame_addTrafo", _wrap_Frame_addTrafo, METH_VARARGS, "Frame_addTrafo(Frame self, FrameTrafo * trafo)"},
 	 { "Frame_clone", _wrap_Frame_clone, METH_O, "Frame_clone(Frame self) -> Frame"},
 	 { "Frame_rank", _wrap_Frame_rank, METH_O, "Frame_rank(Frame self) -> size_t"},
 	 { "Frame_size", _wrap_Frame_size, METH_O, "Frame_size(Frame self) -> size_t"},
@@ -30805,9 +30613,7 @@ static PyMethodDef SwigMethods[] = {
 	 { "Frame_hasSameSizes", _wrap_Frame_hasSameSizes, METH_VARARGS, "Frame_hasSameSizes(Frame self, Frame arg2) -> bool"},
 	 { "Frame___eq__", _wrap_Frame___eq__, METH_VARARGS, "Frame___eq__(Frame self, Frame arg2) -> bool"},
 	 { "Frame_plottableFrame", _wrap_Frame_plottableFrame, METH_O, "Frame_plottableFrame(Frame self) -> Frame"},
-	 { "Frame_transformedFrame", _wrap_Frame_transformedFrame, METH_VARARGS, "Frame_transformedFrame(Frame self, std::string const & key) -> Frame"},
 	 { "Frame_flat", _wrap_Frame_flat, METH_O, "Frame_flat(Frame self) -> Frame"},
-	 { "Frame_availableTrafos", _wrap_Frame_availableTrafos, METH_O, "Frame_availableTrafos(Frame self) -> vector_string_t"},
 	 { "Frame_swigregister", Frame_swigregister, METH_O, NULL},
 	 { "Frame_swiginit", Frame_swiginit, METH_VARARGS, NULL},
 	 { "new_R3", _wrap_new_R3, METH_VARARGS, "\n"
@@ -30873,11 +30679,9 @@ static PyMethodDef SwigMethods[] = {
 /* -------- TYPE CONVERSION AND EQUIVALENCE RULES (BEGIN) -------- */
 
 static swig_type_info _swigt__p_Bin1D = {"_p_Bin1D", "Bin1D *", 0, 0, (void*)0, 0};
-static swig_type_info _swigt__p_CloneableVectorT_FrameTrafo_const_t = {"_p_CloneableVectorT_FrameTrafo_const_t", "CloneableVector< FrameTrafo const > *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_CloneableVectorT_Scale_const_t = {"_p_CloneableVectorT_Scale_const_t", "CloneableVector< Scale const > *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_Coordinate = {"_p_Coordinate", "Coordinate *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_Frame = {"_p_Frame", "Frame *", 0, 0, (void*)0, 0};
-static swig_type_info _swigt__p_FrameTrafo = {"_p_FrameTrafo", "FrameTrafo *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_ICloneable = {"_p_ICloneable", "ICloneable *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_Rotation3DT_double_t = {"_p_Rotation3DT_double_t", "RotMatrix *|Rotation3D< double > *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_Scale = {"_p_Scale", "Scale *", 0, 0, (void*)0, 0};
@@ -30935,11 +30739,9 @@ static swig_type_info _swigt__p_value_type = {"_p_value_type", "value_type *", 0
 
 static swig_type_info *swig_type_initial[] = {
   &_swigt__p_Bin1D,
-  &_swigt__p_CloneableVectorT_FrameTrafo_const_t,
   &_swigt__p_CloneableVectorT_Scale_const_t,
   &_swigt__p_Coordinate,
   &_swigt__p_Frame,
-  &_swigt__p_FrameTrafo,
   &_swigt__p_ICloneable,
   &_swigt__p_Rotation3DT_double_t,
   &_swigt__p_Scale,
@@ -30997,11 +30799,9 @@ static swig_type_info *swig_type_initial[] = {
 };
 
 static swig_cast_info _swigc__p_Bin1D[] = {  {&_swigt__p_Bin1D, 0, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_CloneableVectorT_FrameTrafo_const_t[] = {  {&_swigt__p_CloneableVectorT_FrameTrafo_const_t, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_CloneableVectorT_Scale_const_t[] = {  {&_swigt__p_CloneableVectorT_Scale_const_t, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_Coordinate[] = {  {&_swigt__p_Coordinate, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_Frame[] = {  {&_swigt__p_Frame, 0, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_FrameTrafo[] = {  {&_swigt__p_FrameTrafo, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_ICloneable[] = {  {&_swigt__p_ICloneable, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_Rotation3DT_double_t[] = {  {&_swigt__p_Rotation3DT_double_t, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_Scale[] = {  {&_swigt__p_Scale, 0, 0, 0},{0, 0, 0, 0}};
@@ -31059,11 +30859,9 @@ static swig_cast_info _swigc__p_value_type[] = {  {&_swigt__p_value_type, 0, 0,
 
 static swig_cast_info *swig_cast_initial[] = {
   _swigc__p_Bin1D,
-  _swigc__p_CloneableVectorT_FrameTrafo_const_t,
   _swigc__p_CloneableVectorT_Scale_const_t,
   _swigc__p_Coordinate,
   _swigc__p_Frame,
-  _swigc__p_FrameTrafo,
   _swigc__p_ICloneable,
   _swigc__p_Rotation3DT_double_t,
   _swigc__p_Scale,
diff --git a/auto/Wrap/libBornAgainDevice.py b/auto/Wrap/libBornAgainDevice.py
index 1379b1f4fe14ec87dd39dbe1fb277449391b6a12..c091201732570f57cafa5bd15bf542053334fc5b 100644
--- a/auto/Wrap/libBornAgainDevice.py
+++ b/auto/Wrap/libBornAgainDevice.py
@@ -2178,10 +2178,6 @@ class Datafield(object):
         r"""plottableField(Datafield self) -> Datafield"""
         return _libBornAgainDevice.Datafield_plottableField(self)
 
-    def transformedField(self, label):
-        r"""transformedField(Datafield self, std::string const & label) -> Datafield"""
-        return _libBornAgainDevice.Datafield_transformedField(self, label)
-
     def flat(self):
         r"""flat(Datafield self) -> Datafield"""
         return _libBornAgainDevice.Datafield_flat(self)
diff --git a/auto/Wrap/libBornAgainDevice_wrap.cpp b/auto/Wrap/libBornAgainDevice_wrap.cpp
index a8e9670fb04cda999752bf88619730bb7a8ffa9f..55f20acf31fb47e1074adeb5388cefea69778f95 100644
--- a/auto/Wrap/libBornAgainDevice_wrap.cpp
+++ b/auto/Wrap/libBornAgainDevice_wrap.cpp
@@ -30502,53 +30502,6 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_Datafield_transformedField(PyObject *self, PyObject *args) {
-  PyObject *resultobj = 0;
-  Datafield *arg1 = (Datafield *) 0 ;
-  std::string *arg2 = 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  int res2 = SWIG_OLDOBJ ;
-  PyObject *swig_obj[2] ;
-  SwigValueWrapper< Datafield > result;
-  
-  if (!SWIG_Python_UnpackTuple(args, "Datafield_transformedField", 2, 2, swig_obj)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_Datafield, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Datafield_transformedField" "', argument " "1"" of type '" "Datafield const *""'"); 
-  }
-  arg1 = reinterpret_cast< Datafield * >(argp1);
-  {
-    std::string *ptr = (std::string *)0;
-    res2 = SWIG_AsPtr_std_string(swig_obj[1], &ptr);
-    if (!SWIG_IsOK(res2)) {
-      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Datafield_transformedField" "', argument " "2"" of type '" "std::string const &""'"); 
-    }
-    if (!ptr) {
-      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Datafield_transformedField" "', argument " "2"" of type '" "std::string const &""'"); 
-    }
-    arg2 = ptr;
-  }
-  {
-    try {
-      result = ((Datafield const *)arg1)->transformedField((std::string const &)*arg2);
-    } catch (const std::exception& ex) {
-      // message shown in the Python interpreter
-      const std::string msg {
-        "BornAgain C++ Exception: " + std::string(ex.what())
-      };
-      SWIG_exception(SWIG_RuntimeError, msg.c_str());
-    }
-  }
-  resultobj = SWIG_NewPointerObj((new Datafield(result)), SWIGTYPE_p_Datafield, SWIG_POINTER_OWN |  0 );
-  if (SWIG_IsNewObj(res2)) delete arg2;
-  return resultobj;
-fail:
-  if (SWIG_IsNewObj(res2)) delete arg2;
-  return NULL;
-}
-
-
 SWIGINTERN PyObject *_wrap_Datafield_flat(PyObject *self, PyObject *args) {
   PyObject *resultobj = 0;
   Datafield *arg1 = (Datafield *) 0 ;
@@ -44191,7 +44144,6 @@ static PyMethodDef SwigMethods[] = {
 	 { "Datafield_maxVal", _wrap_Datafield_maxVal, METH_O, "Datafield_maxVal(Datafield self) -> double"},
 	 { "Datafield_minVal", _wrap_Datafield_minVal, METH_O, "Datafield_minVal(Datafield self) -> double"},
 	 { "Datafield_plottableField", _wrap_Datafield_plottableField, METH_O, "Datafield_plottableField(Datafield self) -> Datafield"},
-	 { "Datafield_transformedField", _wrap_Datafield_transformedField, METH_VARARGS, "Datafield_transformedField(Datafield self, std::string const & label) -> Datafield"},
 	 { "Datafield_flat", _wrap_Datafield_flat, METH_O, "Datafield_flat(Datafield self) -> Datafield"},
 	 { "Datafield_noisy", _wrap_Datafield_noisy, METH_VARARGS, "Datafield_noisy(Datafield self, double prefactor, double minimum) -> Datafield"},
 	 { "Datafield_scale", _wrap_Datafield_scale, METH_VARARGS, "Datafield_scale(Datafield self, double factor)"},
diff --git a/rawEx/scatter2d/DodecahedraSAS.py b/rawEx/scatter2d/DodecahedraSAS.py
index 408b5935eb8de4ad2319c8f94cef385cde2bb92d..20e90e062f1c8052ddc149eb3341db458952544c 100755
--- a/rawEx/scatter2d/DodecahedraSAS.py
+++ b/rawEx/scatter2d/DodecahedraSAS.py
@@ -47,4 +47,4 @@ if __name__ == '__main__':
     sample = get_sample()
     simulation = get_simulation(sample)
     result = simulation.simulate()
-    bp.plot_simulation_result(result.transformedField("u,v (mm)"))
+    bp.plot_simulation_result(result)