diff --git a/GUI/coregui/Models/ModelPath.cpp b/GUI/coregui/Models/ModelPath.cpp
index 934265c577fa6cd4d974cbc6d936d17d620aebda..2d0be80fa7b626256eb793528082b7e2fdba475f 100644
--- a/GUI/coregui/Models/ModelPath.cpp
+++ b/GUI/coregui/Models/ModelPath.cpp
@@ -15,55 +15,10 @@
 // ************************************************************************** //
 
 #include "ModelPath.h"
-#include "GroupItem.h"
-#include "ParticleItem.h"
-#include "ParticleLayoutItem.h"
 #include "SessionModel.h"
 #include "JobItem.h"
 
-using std::string;
-
-std::vector<std::unique_ptr<IParameterTranslator>> ModelPath::m_special_translators {};
-
-double ModelPath::getParameterValue(const SessionItem *item, const QString &name)
-{
-    QString head = getFirstField(name);
-    auto p_child = item->getChildByName(head);
-    if (p_child) {
-        return getParameterValue(p_child, stripFirstField(name));
-    }
-    if (item->isTag(head)) {
-        return item->getItemValue(head).toDouble();
-    } else {
-        return 0.0;
-    }
-}
-
-string ModelPath::translateParameterName(const SessionItem* item, const QString& par_name)
-{
-    std::ostringstream result;
-    QStringList list = splitParameterName(par_name);
-    if (list.isEmpty()) {
-        return {};
-    }
-    QString first_field = list[0];
-    result << "/" << translateSingleName(first_field);
-    if (list.size() > 1) {
-        QString remainder = list[1];
-        const SessionItem* p_child = findChild(item, first_field);
-        if (p_child) {
-            result << translateParameterName(p_child, remainder);
-        }
-    }
-    return stripDistributionNone(result.str());
-}
-
-void ModelPath::addParameterTranslator(const IParameterTranslator &translator)
-{
-    m_special_translators.emplace_back(translator.clone());
-}
-
-QString ModelPath::getPathFromIndex(const QModelIndex &index)
+QString ModelPath::getPathFromIndex(const QModelIndex& index)
 {
     if (index.isValid()) {
         QStringList namePath;
@@ -78,15 +33,15 @@ QString ModelPath::getPathFromIndex(const QModelIndex &index)
     return QString();
 }
 
-// FIXME TODO refactor this hell, item #1623, item #1624
+// TODO cover with unit tests and simplify
 
-QModelIndex ModelPath::getIndexFromPath(const SessionModel *model, const QString &path)
+QModelIndex ModelPath::getIndexFromPath(const SessionModel* model, const QString& path)
 {
     if (model) {
         QStringList parts = path.split("/");
-        SessionItem *t = model->rootItem();
-        for(int i = 0; i < parts.length(); i++) {
-            if (t->modelType()==Constants::JobItemType && parts[i]==Constants::InstrumentType) {
+        SessionItem* t = model->rootItem();
+        for (int i = 0; i < parts.length(); i++) {
+            if (t->modelType() == Constants::JobItemType && parts[i] == Constants::InstrumentType) {
                 t = t->getItem(JobItem::T_INSTRUMENT);
                 continue;
             }
@@ -103,7 +58,8 @@ QModelIndex ModelPath::getIndexFromPath(const SessionModel *model, const QString
 }
 
 //! returns an item from relative path wrt to given parent
-SessionItem *ModelPath::getItemFromPath(const QString &relPath, const SessionItem *parent)
+
+SessionItem* ModelPath::getItemFromPath(const QString& relPath, const SessionItem* parent)
 {
     Q_ASSERT(parent);
     QString fullPath = getPathFromIndex(parent->index()) + "/" + relPath;
@@ -112,109 +68,29 @@ SessionItem *ModelPath::getItemFromPath(const QString &relPath, const SessionIte
 
 //! Iterates through all the model and returns true if item is found. This is to
 
-bool ModelPath::isValidItem(SessionModel *model, SessionItem *item, const QModelIndex &parent)
+bool ModelPath::isValidItem(SessionModel* model, SessionItem* item, const QModelIndex& parent)
 {
-    for(int i_row=0; i_row<model->rowCount(parent); ++i_row) {
+    for (int i_row = 0; i_row < model->rowCount(parent); ++i_row) {
         QModelIndex index = model->index(i_row, 0, parent);
-        SessionItem *curr = model->itemForIndex(index);
-        if(curr == item) return true;
+        SessionItem* curr = model->itemForIndex(index);
+        if (curr == item)
+            return true;
 
         bool isvalid = isValidItem(model, item, index);
-        if(isvalid) return isvalid;
+        if (isvalid)
+            return isvalid;
     }
     return false;
 }
 
-QStringList ModelPath::splitParameterName(const QString &par_name)
-{
-    QStringList result;
-    for (auto& translator : m_special_translators) {
-        result = translator->split(par_name);
-        if (result.size() > 0) {
-            return result;
-        }
-    }
-    // TODO: extract as default split method
-    result << getFirstField(par_name);
-    QString remainder = stripFirstField(par_name);
-    if (!remainder.isEmpty()) {
-        result << remainder;
-    }
-    return result;
-}
-
-QString ModelPath::getFirstField(const QString &par_name)
-{
-    QStringList par_list = par_name.split("/");
-    if (par_list.size()==0) return QString {};
-    return par_list.front();
-}
-
-QString ModelPath::stripFirstField(const QString &par_name)
-{
-    QStringList par_list = par_name.split("/");
-    if (par_list.size()<2) return QString {};
-    par_list.removeFirst();
-    return par_list.join("/");
-}
-
-string ModelPath::translateSingleName(const QString &name)
-{
-    for (auto& translator : m_special_translators) {
-        auto result = translator->translate(name);
-        if (!result.empty()) {
-            return result;
-        }
-    }
-    return name.toStdString();
-}
-
-SessionItem* ModelPath::findChild(const SessionItem *item, const QString& first_field)
-{
-    if (item->modelType()==Constants::JobItemType) {
-        if (first_field==Constants::MultiLayerType) {
-            return item->getItem(JobItem::T_SAMPLE);
-        } else if (first_field==Constants::InstrumentType) {
-            return item->getItem(JobItem::T_INSTRUMENT);
-        }
-    }
-    SessionItem* p_child = item->getChildByName(first_field);
-    if (!p_child) { //search through group items
-        auto groupItems = item->getChildrenOfType(Constants::GroupItemType);
-        for (SessionItem* groupItem : groupItems) {
-            if (GroupItem *gItem = dynamic_cast<GroupItem*>(groupItem)) {
-                if (gItem->currentType() == first_field) {
-                    p_child = gItem->currentItem();
-                    break;
-                }
-            }
-        }
-    }
-    return p_child;
-}
-
-// TODO: item #1623, remove this hack when refactoring name translations
-string ModelPath::stripDistributionNone(const string &name)
-{
-    const string distribution_none { "/DistributionNone/Value" };
-    if (name.length() >= distribution_none.length() &&
-        name.compare(name.length()-distribution_none.length(), distribution_none.length(),
-                     distribution_none)==0) {
-        return name.substr(0, name.length()-distribution_none.length());
-    }
-    return name;
-}
-
 //! Returns true when we know how to translate ParameterItem link to domain name.
-// TODO: item #1623, item #1624 remove this hack when refactoring name translations
-// Function is intended to disalow drag-and-drop of ParameterItem onto FitParameterItem
-// for non-implemented  or senseless translations (in GUI)
-bool ModelPath::isTranslatable(const SessionItem *item, const QString &par_name)
+
+bool ModelPath::isTranslatable(const SessionItem* item, const QString& par_name)
 {
     Q_UNUSED(item);
-    if(par_name.contains(Constants::DetectorType))
+    if (par_name.contains(Constants::DetectorType))
         return false;
-    if(par_name.contains(Constants::DistributionSigmaFactor))
+    if (par_name.contains(Constants::DistributionSigmaFactor))
         return false;
     return true;
 }
@@ -222,9 +98,9 @@ bool ModelPath::isTranslatable(const SessionItem *item, const QString &par_name)
 //! Returns ancestor of given modelType for given item.
 //! For example, returns corresponding jobItem owning ParameterItem via ParameterContainer.
 
-const SessionItem* ModelPath::ancestor(const SessionItem *item, const QString &requiredModelType)
+const SessionItem* ModelPath::ancestor(const SessionItem* item, const QString& requiredModelType)
 {
-    const SessionItem *cur = item;
+    const SessionItem* cur = item;
     while (cur && cur->modelType() != requiredModelType)
         cur = cur->parent();
 
@@ -236,8 +112,8 @@ const SessionItem* ModelPath::ancestor(const SessionItem *item, const QString &r
 QString ModelPath::itemPathTranslation(const SessionItem& item, const SessionItem* topItem)
 {
     QStringList pathList;
-    const SessionItem *current(&item);
-    while (current && current!=topItem) {
+    const SessionItem* current(&item);
+    while (current && current != topItem) {
         pathList = current->translateList(pathList);
         current = current->parent();
     }
diff --git a/GUI/coregui/Models/ModelPath.h b/GUI/coregui/Models/ModelPath.h
index fec030aed229039d27f89d62af4bc65525ad1402..abb5b086de578e4c99f1b705635e115c3133ae05 100644
--- a/GUI/coregui/Models/ModelPath.h
+++ b/GUI/coregui/Models/ModelPath.h
@@ -3,7 +3,7 @@
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
 //! @file      GUI/coregui/Models/ModelPath.h
-//! @brief     Defines class ModelPath
+//! @brief     Defines ModelPath namespace
 //!
 //! @homepage  http://www.bornagainproject.org
 //! @license   GNU General Public License v3 or higher (see COPYING)
@@ -26,47 +26,21 @@ class SessionItem;
 class QModelIndex;
 class SessionModel;
 
-class BA_CORE_API_ ModelPath
+namespace ModelPath
 {
-public:
-    //! retrieve value of given parameter name
-    static double getParameterValue(const SessionItem *item, const QString &name);
+    QString getPathFromIndex(const QModelIndex &index);
 
-    //! translates the given parameter name to a domain parameter name
-    //! name should start with a child/subitem name or be a direct parameter name
-    static std::string translateParameterName(const SessionItem *item, const QString &par_name);
+    QModelIndex getIndexFromPath(const SessionModel *model, const QString &path);
 
-    static void addParameterTranslator(const IParameterTranslator &translator);
+    SessionItem* getItemFromPath(const QString &relPath, const SessionItem* parent);
 
-    static QString getPathFromIndex(const QModelIndex &index);
+    bool isValidItem(SessionModel *model, SessionItem *item, const QModelIndex &parent);
 
-    static QModelIndex getIndexFromPath(const SessionModel *model, const QString &path);
+    bool isTranslatable(const SessionItem *item, const QString &par_name);
 
-    static SessionItem* getItemFromPath(const QString &relPath, const SessionItem* parent);
+    const SessionItem *ancestor(const SessionItem *item, const QString& requiredModelType);
 
-    static bool isValidItem(SessionModel *model, SessionItem *item, const QModelIndex &parent);
+    QString itemPathTranslation(const SessionItem& item, const SessionItem* topItem=0);
+}
 
-    static bool isTranslatable(const SessionItem *item, const QString &par_name);
-
-    static const SessionItem *ancestor(const SessionItem *item, const QString& requiredModelType);
-
-    static QString itemPathTranslation(const SessionItem& item, const SessionItem* topItem=0);
-
-private:
-
-    static QStringList splitParameterName(const QString& par_name);
-
-    static QString getFirstField(const QString& par_name);
-
-    static QString stripFirstField(const QString& par_name);
-
-    static std::string translateSingleName(const QString& name);
-
-    static SessionItem* findChild(const SessionItem* item, const QString& first_field);
-
-    static std::string stripDistributionNone(const std::string& name);
-
-    static std::vector<std::unique_ptr<IParameterTranslator>> m_special_translators;
-};
-
-#endif // MODELPATH_H
+#endif // MODELPATH_H namespace
diff --git a/GUI/coregui/Models/ParameterTranslators.cpp b/GUI/coregui/Models/ParameterTranslators.cpp
index 76b2d6f012ab23c2f5d60435946765174d45af45..60b538afd67204453a907b611ca6bccfe826d422 100644
--- a/GUI/coregui/Models/ParameterTranslators.cpp
+++ b/GUI/coregui/Models/ParameterTranslators.cpp
@@ -17,13 +17,8 @@
 #include "ParameterTranslators.h"
 #include "BornAgainNamespace.h"
 #include "ParticleItem.h"
-#include "RotationItems.h"
 #include "VectorItem.h"
-#include "InterferenceFunctionItems.h"
-#include "Lattice2DItems.h"
 #include "GUIHelpers.h"
-#include "MultiLayerItem.h"
-#include <QDebug>
 
 namespace {
 const QStringList expectedRoughnessPars = QStringList() << QString::fromStdString(BornAgain::Sigma)
@@ -31,64 +26,7 @@ const QStringList expectedRoughnessPars = QStringList() << QString::fromStdStrin
     << QString::fromStdString(BornAgain::CorrelationLength);
 }
 
-QStringList IParameterTranslator::split(const QString &par_name) const
-{
-    QStringList result;
-
-    std::string translated_name = translate(par_name);
-    if (!translated_name.empty())
-        result << par_name;
-
-    return result;
-}
-
-std::string PositionTranslator::translate(const QString& name) const
-{
-    QStringList name_list = name.split("/");
-    if (name_list.size() > 2) return {};
-    if (name_list.size() > 1 && name_list[0] == ParticleItem::P_POSITION) {
-        if (name_list[1] == VectorItem::P_X) {
-            return BornAgain::PositionX;
-        }
-        if (name_list[1] == VectorItem::P_Y) {
-            return BornAgain::PositionY;
-        }
-        if (name_list[1] == VectorItem::P_Z) {
-            return BornAgain::PositionZ;
-        }
-    }
-    return {};
-}
-
-std::string RotationTranslator::translate(const QString& name) const
-{
-    QStringList name_list = name.split("/");
-    std::string separator {"/"};
-    if (name_list.size() > 3) return {};
-    if (name_list.size() == 3 && name_list[0] == Constants::TransformationType) {
-        if (name_list[1] == Constants::XRotationType) {
-            return BornAgain::XRotationType + separator + BornAgain::Angle;
-        }
-        if (name_list[1] == Constants::YRotationType) {
-            return BornAgain::YRotationType + separator + BornAgain::Angle;
-        }
-        if (name_list[1] == Constants::ZRotationType) {
-            return BornAgain::ZRotationType + separator + BornAgain::Angle;
-        }
-        if (name_list[1] == Constants::EulerRotationType) {
-            if (name_list[2] == EulerRotationItem::P_ALPHA) {
-                return BornAgain::EulerRotationType + separator + BornAgain::Alpha;
-            } else if (name_list[2] == EulerRotationItem::P_BETA) {
-                return BornAgain::EulerRotationType + separator + BornAgain::Beta;
-            } else if (name_list[2] == EulerRotationItem::P_GAMMA) {
-                return BornAgain::EulerRotationType + separator + BornAgain::Gamma;
-            }
-        }
-    }
-    return {};
-}
-
-QStringList NewPositionTranslator::translate(const QStringList& list) const
+QStringList PositionTranslator::translate(const QStringList& list) const
 {
     if(list.back() != ParticleItem::P_POSITION)
         return list;
@@ -109,7 +47,7 @@ QStringList NewPositionTranslator::translate(const QStringList& list) const
     return result;
 }
 
-QStringList NewRotationTranslator::translate(const QStringList& list) const
+QStringList RotationTranslator::translate(const QStringList& list) const
 {
     if(list.back() != Constants::TransformationType)
         return list;
diff --git a/GUI/coregui/Models/ParameterTranslators.h b/GUI/coregui/Models/ParameterTranslators.h
index 23da7ed1919385302bb0829e2b1c7340755a8690..ded0f45304597b771fccd1b4d52fe6dee11d0c8f 100644
--- a/GUI/coregui/Models/ParameterTranslators.h
+++ b/GUI/coregui/Models/ParameterTranslators.h
@@ -20,40 +20,8 @@
 
 class SessionItem;
 
-class IParameterTranslator {
-public:
-    virtual ~IParameterTranslator()=default;
-
-    virtual IParameterTranslator* clone() const=0;
-
-    virtual QStringList split(const QString &par_name) const;
-    virtual std::string translate(const QString &name) const=0;
-};
-
-
-class PositionTranslator final : public IParameterTranslator {
-public:
-    ~PositionTranslator() override {}
-
-    PositionTranslator* clone() const override { return new PositionTranslator {}; }
-
-    std::string translate(const QString &name) const override;
-};
-
-
-class RotationTranslator final : public IParameterTranslator {
-public:
-    ~RotationTranslator() override {}
-
-    RotationTranslator* clone() const override { return new RotationTranslator {}; }
-
-    std::string translate(const QString &name) const override;
-};
-
 class IPathTranslator {
 public:
-//    IPathTranslator(const IPathTranslator&) = delete;
-//    IPathTranslator& operator=(const IPathTranslator&) = delete;
     virtual ~IPathTranslator()=default;
 
     virtual IPathTranslator* clone() const=0;
@@ -61,20 +29,20 @@ public:
     virtual QStringList translate(const QStringList& list) const=0;
 };
 
-class NewPositionTranslator : public IPathTranslator {
+class PositionTranslator : public IPathTranslator {
 public:
-    ~NewPositionTranslator() override {}
+    ~PositionTranslator() override {}
 
-    NewPositionTranslator* clone() const override { return new NewPositionTranslator; }
+    PositionTranslator* clone() const override { return new PositionTranslator; }
 
     virtual QStringList translate(const QStringList& list) const;
 };
 
-class NewRotationTranslator : public IPathTranslator {
+class RotationTranslator : public IPathTranslator {
 public:
-    ~NewRotationTranslator() override {}
+    ~RotationTranslator() override {}
 
-    NewRotationTranslator* clone() const override { return new NewRotationTranslator; }
+    RotationTranslator* clone() const override { return new RotationTranslator; }
 
     virtual QStringList translate(const QStringList& list) const;
 };
@@ -99,5 +67,4 @@ private:
     int getLayerIndex(QString layerName) const;
 };
 
-
 #endif // PARAMETERTRANSLATORS_H
diff --git a/GUI/coregui/Models/ParameterTreeItems.cpp b/GUI/coregui/Models/ParameterTreeItems.cpp
index 2a79e085b41050830f0e2576aa745e3a7867e062..b5ead6b0f17a0678f78f669e28371db62dd18da4 100644
--- a/GUI/coregui/Models/ParameterTreeItems.cpp
+++ b/GUI/coregui/Models/ParameterTreeItems.cpp
@@ -85,19 +85,12 @@ void ParameterItem::restoreFromBackup()
 
 //! Returns true if item can be used to drag-and-drop to FitParameterContainer.
 //! In other words, if translation to domain name is implemented and valid.
-// TODO, item #1623, consider the necessity of method after all fit parameter translations
-// are fixed
 
 bool ParameterItem::isFittable() const
 {
     const SessionItem *jobItem = ModelPath::ancestor(this, Constants::JobItemType);
     Q_ASSERT(jobItem);
     return ModelPath::isTranslatable(jobItem, FitParameterHelper::getParameterItemPath(this));
-
-// TODO, item #1623, consider equivalent implementation instead
-//    if(getItemValue(P_DOMAIN).toString() == Constants::FITPAR_UNFITTABLE)
-//        return false;
-//    return true;
 }
 
 // ----------------------------------------------------------------------------
diff --git a/GUI/coregui/Models/ParameterTreeUtils.cpp b/GUI/coregui/Models/ParameterTreeUtils.cpp
index a69834d7d69b221dcaab7c1d71be71d2d722df50..004c3c11d91f6e3bfff04aa6deb6936092607ca4 100644
--- a/GUI/coregui/Models/ParameterTreeUtils.cpp
+++ b/GUI/coregui/Models/ParameterTreeUtils.cpp
@@ -36,6 +36,9 @@ QString removeLeadingSlash(const QString& name )
 }
 
 void handleItem(SessionItem* tree, const SessionItem* source);
+
+void populateDomainLinks(SessionItem* container);
+
 }
 
 void ParameterTreeUtils::createParameterTree(JobItem* jobItem)
@@ -51,7 +54,7 @@ void ParameterTreeUtils::createParameterTree(JobItem* jobItem)
     // Provides all items in "JobItem/Parameter Tree Container" with domain links already
     // at the stage of ParameterTree creation. It is necessary for validation, in Release mode
     // it will lead for unnecessary large project files.
-    ParameterTreeUtils::populateDomainLinks(container);
+    populateDomainLinks(container);
 #endif
 }
 
@@ -178,15 +181,17 @@ QString ParameterTreeUtils::parameterNameToDomainName(const QString& parName,
     return {};
 }
 
+namespace {
+
 //! For every ParameterItem in a container creates a link to the domain.
 
-void ParameterTreeUtils::populateDomainLinks(SessionItem* container)
+void populateDomainLinks(SessionItem* container)
 {
     if(container->modelType() != Constants::ParameterContainerType)
         throw GUIHelpers::Error("ParameterTreeUtils::populateParameterContainer() -> Error. "
                                 "Not a ParameterContainerType.");
 
-    visitParameterContainer(container, [container](ParameterItem* parItem)
+    ParameterTreeUtils::visitParameterContainer(container, [container](ParameterItem* parItem)
     {
         QString translation = "*/" + ModelPath::itemPathTranslation(*parItem->linkedItem(),
                                                                     container->parent());
@@ -194,8 +199,6 @@ void ParameterTreeUtils::populateDomainLinks(SessionItem* container)
     });
 }
 
-namespace {
-
 void handleItem(SessionItem* tree, const SessionItem* source)
 {
     if (tree->modelType() == Constants::ParameterLabelType) {
diff --git a/GUI/coregui/Models/ParameterTreeUtils.h b/GUI/coregui/Models/ParameterTreeUtils.h
index d27a1a5498965bbf9bfc2fa9ce7c4f22cac42f08..1e86be9bde70034bda2d126835dfdbbafd1a6aa0 100644
--- a/GUI/coregui/Models/ParameterTreeUtils.h
+++ b/GUI/coregui/Models/ParameterTreeUtils.h
@@ -52,8 +52,6 @@ BA_CORE_API_ QString domainNameToParameterName(const QString& domainName, const
 
 BA_CORE_API_ QString parameterNameToDomainName(const QString& parName, const SessionItem* source);
 
-BA_CORE_API_ void populateDomainLinks(SessionItem* container);
-
 }
 
 #endif // PARAMETERTREEUTILS_H
diff --git a/GUI/coregui/Models/ParticleCompositionItem.cpp b/GUI/coregui/Models/ParticleCompositionItem.cpp
index 0081517b288d1f26ef867835556c67e64cdb55f1..dc1f09f703e2d5360e1f5b3241d115d4172c071e 100644
--- a/GUI/coregui/Models/ParticleCompositionItem.cpp
+++ b/GUI/coregui/Models/ParticleCompositionItem.cpp
@@ -30,18 +30,14 @@ ParticleCompositionItem::ParticleCompositionItem()
     getItem(ParticleItem::P_ABUNDANCE)->setLimits(RealLimits::limited(0.0, 1.0));
     getItem(ParticleItem::P_ABUNDANCE)->setDecimals(3);
     addGroupProperty(ParticleItem::P_POSITION, Constants::VectorType);
-    PositionTranslator position_translator;
-    ModelPath::addParameterTranslator(position_translator);
 
     registerTag(T_PARTICLES, 0, -1, QStringList() << Constants::ParticleType <<
                 Constants::ParticleCoreShellType << Constants::ParticleCompositionType);
     setDefaultTag(T_PARTICLES);
     registerTag(ParticleItem::T_TRANSFORMATION, 0, 1, QStringList() << Constants::TransformationType);
-    RotationTranslator rotation_translator;
-    ModelPath::addParameterTranslator(rotation_translator);
 
-    addTranslator(NewPositionTranslator());
-    addTranslator(NewRotationTranslator());
+    addTranslator(PositionTranslator());
+    addTranslator(RotationTranslator());
 
     mapper()->setOnParentChange(
                 [this](SessionItem *parent) {
diff --git a/GUI/coregui/Models/ParticleCoreShellItem.cpp b/GUI/coregui/Models/ParticleCoreShellItem.cpp
index db63e9364159c5364310f50c7cafad425700cbd6..d7e0fff5fc6876b2eee89194123a1955afb3e7a6 100644
--- a/GUI/coregui/Models/ParticleCoreShellItem.cpp
+++ b/GUI/coregui/Models/ParticleCoreShellItem.cpp
@@ -30,17 +30,13 @@ ParticleCoreShellItem::ParticleCoreShellItem()
     getItem(ParticleItem::P_ABUNDANCE)->setLimits(RealLimits::limited(0.0, 1.0));
     getItem(ParticleItem::P_ABUNDANCE)->setDecimals(3);
     addGroupProperty(ParticleItem::P_POSITION, Constants::VectorType);
-    PositionTranslator position_translator;
-    ModelPath::addParameterTranslator(position_translator);
 
     registerTag(T_CORE, 0, 1, QStringList() << Constants::ParticleType);
     registerTag(T_SHELL, 0, 1, QStringList() << Constants::ParticleType);
     registerTag(ParticleItem::T_TRANSFORMATION, 0, 1, QStringList() << Constants::TransformationType);
-    RotationTranslator rotation_translator;
-    ModelPath::addParameterTranslator(rotation_translator);
 
-    addTranslator(NewPositionTranslator());
-    addTranslator(NewRotationTranslator());
+    addTranslator(PositionTranslator());
+    addTranslator(RotationTranslator());
 
     mapper()->setOnParentChange(
                 [this](SessionItem*)
diff --git a/GUI/coregui/Models/ParticleItem.cpp b/GUI/coregui/Models/ParticleItem.cpp
index 21a9834ee6394fe02a5ab0d9c3ac08a49590733e..4e604712a651ebd0ee51c3fd9eabd5b3252e68dc 100644
--- a/GUI/coregui/Models/ParticleItem.cpp
+++ b/GUI/coregui/Models/ParticleItem.cpp
@@ -39,16 +39,12 @@ ParticleItem::ParticleItem()
     addProperty(P_ABUNDANCE, 1.0)->setLimits(RealLimits::limited(0.0, 1.0));
     getItem(P_ABUNDANCE)->setDecimals(3);
     addGroupProperty(P_POSITION, Constants::VectorType);
-    PositionTranslator position_translator;
-    ModelPath::addParameterTranslator(position_translator);
 
     registerTag(T_TRANSFORMATION, 0, 1, QStringList() << Constants::TransformationType);
     setDefaultTag(T_TRANSFORMATION);
-    RotationTranslator rotation_translator;
-    ModelPath::addParameterTranslator(rotation_translator);
 
-    addTranslator(NewPositionTranslator());
-    addTranslator(NewRotationTranslator());
+    addTranslator(PositionTranslator());
+    addTranslator(RotationTranslator());
 
     mapper()->setOnParentChange(
                 [this](SessionItem* parentItem) {