diff --git a/GUI/Model/Types/DoubleDescriptor.cpp b/GUI/Model/Types/DoubleDescriptor.cpp
index 361f0bd374800ee633afaa4c2a3d56617c6b73f0..7e0bbb8eb351455da8af4f15f8543a842bba071e 100644
--- a/GUI/Model/Types/DoubleDescriptor.cpp
+++ b/GUI/Model/Types/DoubleDescriptor.cpp
@@ -70,6 +70,14 @@ DoubleDescriptor::DoubleDescriptor(const QString& label, const QString& tooltip,
 {
 }
 
+DoubleDescriptor::DoubleDescriptor(const QString& label, double* var,
+                                   const variant<QString, Unit>& unit)
+    : label(label), decimals(3), limits(RealLimits::nonnegative()), unit(unit)
+{
+    set = [=](double v) { *var = v; };
+    get = [=]() { return *var; };
+}
+
 DoubleDescriptor::operator double() const
 {
     return get();
diff --git a/GUI/Model/Types/DoubleDescriptor.h b/GUI/Model/Types/DoubleDescriptor.h
index 80c0aeb5a88837eb90b8cf5ad84d7b26759797c5..3fd1f54416d0e530fdac8ac8d9d23f91b6b91081 100644
--- a/GUI/Model/Types/DoubleDescriptor.h
+++ b/GUI/Model/Types/DoubleDescriptor.h
@@ -35,6 +35,8 @@ using std::variant;
 class DoubleDescriptor {
 
 public:
+    DoubleDescriptor(const DoubleDescriptor& other) = default;
+
     //! Operates on a session item. The settings (like decimals, limits) are taken from the session
     //! item.
     //! Only for easier migration. Should be removed after SessionItem refactoring.
@@ -45,6 +47,15 @@ public:
     //! Only for easier migration. Should be removed after SessionItem refactoring.
     DoubleDescriptor(const QString& label, SessionItem* item, const variant<QString, Unit>& unit);
 
+    DoubleDescriptor(const QString& label, double* var, const variant<QString, Unit>& unit);
+
+    //! Operates on any kind of storage (e.g. session items), by using setter/getter methods
+    DoubleDescriptor(QString label, QString tooltip, int decimals, const RealLimits& limits,
+                     function<void(double)> setter, function<double()> getter,
+                     const variant<QString, Unit>& unit);
+
+    DoubleDescriptor() = default;
+
 private: // private as long as path initialization is not included in params (to be done after
          // SessionItem migration)
     //! Operates on a double value (e.g a member variable).
@@ -56,11 +67,6 @@ private: // private as long as path initialization is not included in params (to
     DoubleDescriptor(const QString& label, const QString& tooltip, double* var,
                      const variant<QString, Unit>& unit);
 
-    //! Operates on any kind of storage (e.g. session items), by using setter/getter methods
-    DoubleDescriptor(QString label, QString tooltip, int decimals, const RealLimits& limits,
-                     function<void(double)> setter, function<double()> getter,
-                     const variant<QString, Unit>& unit);
-
     //! Operates on any kind of storage (e.g. session items), by using setter/getter methods
     //! decimals is set to 3, limits is set to nonnegative
     DoubleDescriptor(const QString& label, const QString& tooltip, function<void(double)> setter,
diff --git a/GUI/Model/Types/VectorDescriptor.h b/GUI/Model/Types/VectorDescriptor.h
index 46eb6b17ba21f61e133e9d4d286c52697857a4f7..567acf7369b6826ba8679a85c63ea9c4ba4d050c 100644
--- a/GUI/Model/Types/VectorDescriptor.h
+++ b/GUI/Model/Types/VectorDescriptor.h
@@ -38,6 +38,39 @@ public:
     {
     }
 
+    VectorDescriptor(const QString& label, const QString& tooltip, double* xVar, double* yVar,
+                     double* zVar, const variant<QString, Unit>& unit)
+        : label(label), tooltip(tooltip), x("X", xVar, unit), y("Y", yVar, unit), z("Z", zVar, unit)
+    {
+        x.limits = RealLimits::limitless();
+        y.limits = RealLimits::limitless();
+        z.limits = RealLimits::limitless();
+        x.decimals = 3;
+        y.decimals = 3;
+        z.decimals = 3;
+        x.tooltip = tooltip;
+        y.tooltip = tooltip;
+        z.tooltip = tooltip;
+    }
+
+    VectorDescriptor(const QString& label, const QString& tooltip,
+                     const variant<QString, Unit>& unit)
+        : label(label), tooltip(tooltip)
+    {
+        x.limits = RealLimits::limitless();
+        y.limits = RealLimits::limitless();
+        z.limits = RealLimits::limitless();
+        x.decimals = 3;
+        y.decimals = 3;
+        z.decimals = 3;
+        x.tooltip = tooltip;
+        y.tooltip = tooltip;
+        z.tooltip = tooltip;
+        x.unit = unit;
+        y.unit = unit;
+        z.unit = unit;
+    }
+
     QString label;   //!< A label text (short, no trailing colon)
     QString tooltip; //!< Tooltip text
     DoubleDescriptor x;