diff --git a/Framework/API/inc/MantidAPI/IPeaksWorkspace.h b/Framework/API/inc/MantidAPI/IPeaksWorkspace.h
index 9b639df34821c66aac3a0639159b500c2204cb2e..0246f6119dc011bf7779202ad94c039d81064e9c 100644
--- a/Framework/API/inc/MantidAPI/IPeaksWorkspace.h
+++ b/Framework/API/inc/MantidAPI/IPeaksWorkspace.h
@@ -134,6 +134,12 @@ public:
   virtual std::unique_ptr<Geometry::IPeak>
   createPeakHKL(const Mantid::Kernel::V3D &HKL) const = 0;
 
+  /**
+   * Create an instance of a peak using default constructor
+   * @return a pointer to a new Peak object.
+   */
+  virtual std::unique_ptr<Geometry::IPeak> createPeak() const = 0;
+
   //---------------------------------------------------------------------------------------------
   /** Determine if the workspace has been integrated using a peaks integration
    * algorithm.
diff --git a/Framework/DataObjects/inc/MantidDataObjects/LeanElasticPeaksWorkspace.h b/Framework/DataObjects/inc/MantidDataObjects/LeanElasticPeaksWorkspace.h
index 673557927433877e86d4d70fa1a3d3c61473d9e3..e2f671536441855ac5b736951b55b650e8b889df 100644
--- a/Framework/DataObjects/inc/MantidDataObjects/LeanElasticPeaksWorkspace.h
+++ b/Framework/DataObjects/inc/MantidDataObjects/LeanElasticPeaksWorkspace.h
@@ -106,6 +106,8 @@ public:
   std::unique_ptr<Geometry::IPeak>
   createPeakHKL(const Kernel::V3D &HKL) const override;
 
+  std::unique_ptr<Geometry::IPeak> createPeak() const override;
+
   int peakInfoNumber(const Kernel::V3D &qFrame, bool labCoords) const override;
 
   std::vector<LeanElasticPeak> &getPeaks();
diff --git a/Framework/DataObjects/inc/MantidDataObjects/PeaksWorkspace.h b/Framework/DataObjects/inc/MantidDataObjects/PeaksWorkspace.h
index c459f8459bec9f3542c7bdbf431172933d2f084d..a06284d2fa48a48ce246529ea963f17572be103f 100644
--- a/Framework/DataObjects/inc/MantidDataObjects/PeaksWorkspace.h
+++ b/Framework/DataObjects/inc/MantidDataObjects/PeaksWorkspace.h
@@ -104,6 +104,8 @@ public:
   std::unique_ptr<Geometry::IPeak>
   createPeakHKL(const Kernel::V3D &HKL) const override;
 
+  std::unique_ptr<Geometry::IPeak> createPeak() const override;
+
   int peakInfoNumber(const Kernel::V3D &qFrame, bool labCoords) const override;
 
   std::vector<Peak> &getPeaks();
diff --git a/Framework/DataObjects/src/LeanElasticPeaksWorkspace.cpp b/Framework/DataObjects/src/LeanElasticPeaksWorkspace.cpp
index 2c471adb77e7c2f59444fd0b398fc1058ebd6a3d..942e74339c4395ff663b520364ec214d29d327be 100644
--- a/Framework/DataObjects/src/LeanElasticPeaksWorkspace.cpp
+++ b/Framework/DataObjects/src/LeanElasticPeaksWorkspace.cpp
@@ -327,6 +327,15 @@ LeanElasticPeaksWorkspace::createPeakHKL(const V3D &HKL) const {
   return peak;
 }
 
+/**
+ * Create a Peak using default values
+ *
+ * @return a point to a new peak object
+ */
+std::unique_ptr<IPeak> LeanElasticPeaksWorkspace::createPeak() const {
+  return std::make_unique<LeanElasticPeak>();
+}
+
 /**
  * Returns selected information for a "peak" at QLabFrame.
  *
diff --git a/Framework/DataObjects/src/PeaksWorkspace.cpp b/Framework/DataObjects/src/PeaksWorkspace.cpp
index 2741e8cb74c7a2eca8f841484bd2ae4bf6ba2d05..52f7be186a9bd892b9d076122e6fb2e120da1b33 100644
--- a/Framework/DataObjects/src/PeaksWorkspace.cpp
+++ b/Framework/DataObjects/src/PeaksWorkspace.cpp
@@ -509,6 +509,15 @@ std::unique_ptr<IPeak> PeaksWorkspace::createPeakHKL(const V3D &HKL) const {
   return peak;
 }
 
+/**
+ * Create a Peak using default values
+ *
+ * @return a point to a new peak object
+ */
+std::unique_ptr<IPeak> PeaksWorkspace::createPeak() const {
+  return std::make_unique<Peak>();
+}
+
 /**
  * Returns selected information for a "peak" at QLabFrame.
  *