diff --git a/GUI/View/Project/PyImportAssistant.cpp b/GUI/View/Project/PyImportAssistant.cpp
index a27b7dc9443d755fbecc575372ce54f2da110618..db33105cc4af227e87cd3747cafc70945e8b664d 100644
--- a/GUI/View/Project/PyImportAssistant.cpp
+++ b/GUI/View/Project/PyImportAssistant.cpp
@@ -107,7 +107,7 @@ std::unique_ptr<MultiLayer> createMultiLayer(const QString& snippet, const QStri
     PyObjectPtr result{PyInterpreter::createMultiLayerFromPython(
         result_ptr, snippet.toStdString(), funcName.toStdString(), bornagainDir())};
 
-    std::unique_ptr<MultiLayer> multilayer_ptr(reinterpret_cast<MultiLayer*>(result_ptr));
+    std::unique_ptr<MultiLayer> multilayer_ptr(reinterpret_cast<MultiLayer*>(result_ptr)->clone());
 
     if (!result.valid()) {
         QApplication::restoreOverrideCursor();
@@ -184,9 +184,9 @@ std::unique_ptr<MultiLayer> PyImportAssistant::importMultiLayer()
     if (funcName.isEmpty())
         return {};
 
-    auto sample = createMultiLayer(snippet, funcName);
+    std::unique_ptr<MultiLayer> sample = createMultiLayer(snippet, funcName);
     if (!sample)
-        return {};
+        throw std::runtime_error("Import did not yield MultiLayer object");
 
     if (sample->sampleName() == "Unnamed")
         sample->setSampleName(GUI::Util::Path::baseName(fileName).toStdString());
diff --git a/GUI/View/SampleDesigner/SampleListModel.cpp b/GUI/View/SampleDesigner/SampleListModel.cpp
index 304e0d788ee84464dc6ac1b562153be343529c67..fc297ae116c5608e51d76af337242876275db0d1 100644
--- a/GUI/View/SampleDesigner/SampleListModel.cpp
+++ b/GUI/View/SampleDesigner/SampleListModel.cpp
@@ -162,14 +162,13 @@ QModelIndex SampleListModel::createSampleFromExamples(const QString& className,
 #ifdef BORNAGAIN_PYTHON
 QModelIndex SampleListModel::createSampleFromPython()
 {
-    auto sample = PyImportAssistant::importMultiLayer();
+    std::unique_ptr<MultiLayer> sample = PyImportAssistant::importMultiLayer();
     if (!sample)
-        return {}; // any messages already shown to user; no dlg necessary anymore
+        return {}; // any messages already shown to user
 
-
-    auto* sampleItem = PyImportAssistant::itemizeSample(*sample);
+    SampleItem* sampleItem = PyImportAssistant::itemizeSample(*sample);
     if (!sampleItem)
-        return {}; // any messages already shown to user; no dlg necessary anymore
+        return {}; // any messages already shown to user
 
     sampleItem->setDescription("Imported from python code");