diff --git a/SrcBehaviorLoader/PluginLoader.cpp b/SrcBehaviorLoader/PluginLoader.cpp
index 703eafff128827eeafcd2d4b3d877428c0cd9756..a7754e80da2939239330fb3fce89a9658bfd64b4 100644
--- a/SrcBehaviorLoader/PluginLoader.cpp
+++ b/SrcBehaviorLoader/PluginLoader.cpp
@@ -205,6 +205,7 @@ std::vector<std::string> PluginLoader::searchDirectoriesForPlugins(std::vector<s
 
 PluginLoader::PluginLoader(QObject *parent)
 {
+	m_MetaData = nullptr;
 	m_PluginLoader = new QPluginLoader(this);
 	m_PluginListModel = new QStringListModel();
 }
@@ -233,6 +234,7 @@ bool PluginLoader::loadPluginFromFilename(QString const& filename)
 		retval = m_PluginLoader->load();
 		QString s = m_PluginLoader->errorString();
 		std::string ss = s.toStdString();
+		addPluginnameToLists(getCurrentPluginName(), filename);
 
         if (!m_PluginLoader->isLoaded())
 		{
@@ -248,6 +250,14 @@ bool PluginLoader::loadPluginFromFilename(QString const& filename)
 	return retval;
 }
 
+void PluginLoader::addPluginnameToLists(QString mstring, QString filename)
+{	
+	if (!m_PluginList.contains(mstring))
+		m_PluginList.append(mstring);
+	m_PluginListModel->setStringList(m_PluginList);
+	m_PluginMap.insert(std::pair<QString, QString>(mstring, filename));
+}
+
 bool PluginLoader::loadPluginFromName(QString name) {
 	QString filename = m_PluginMap.find(name)->second;
 	return loadPluginFromFilename(filename);
@@ -266,10 +276,7 @@ int PluginLoader::addToPluginList(QString filename, QString suffix) {
 		QJsonValue pluginMeda(loader.metaData().value("MetaData"));
 		QJsonObject metaObj = pluginMeda.toObject();
 		QString mstring = metaObj.value("name").toString();
-		if (!m_PluginList.contains(mstring))
-			m_PluginList.append(mstring);
-		m_PluginListModel->setStringList(m_PluginList);
-		m_PluginMap.insert(std::pair<QString, QString>(mstring, filename));
+		addPluginnameToLists(mstring, filename);
 	}
 	else {
 		return 2;
@@ -288,12 +295,14 @@ QObject* PluginLoader::getPluginInstance() {
 
 QJsonObject PluginLoader::getPluginMetaData() const
 {
-	return m_MetaData;
+	if (m_MetaData == nullptr)
+		qFatal("(getPluginMetaData) No plugin loaded");
+	return *m_MetaData;
 }
 
 void PluginLoader::readMetaDataFromPlugin()
 {
-	m_MetaData = m_PluginLoader->metaData().value("MetaData").toObject();
+	m_MetaData = std::make_shared<QJsonObject>(m_PluginLoader->metaData().value("MetaData").toObject());
 }
 
 bool PluginLoader::getIsPluginLoaded() {
@@ -301,7 +310,9 @@ bool PluginLoader::getIsPluginLoaded() {
 }
 
 QString PluginLoader::getCurrentPluginName() {
-	return m_currentPluginName;
+	if (m_MetaData == nullptr)
+		return "Error name";
+	return m_MetaData->value("name").toString();
 }
 const std::map<QString, QString> &PluginLoader::getPluginMap() const
 {
diff --git a/SrcBehaviorLoader/PluginLoader.h b/SrcBehaviorLoader/PluginLoader.h
index dc313ce85cbc10ec4f348ad39c8f88056ceed0cd..38c359e57a8bed68e9aa784f287c5a457c41c510 100644
--- a/SrcBehaviorLoader/PluginLoader.h
+++ b/SrcBehaviorLoader/PluginLoader.h
@@ -68,6 +68,8 @@ public:
 
 private:
 
+	void addPluginnameToLists(QString name, QString filename);
+
 	//a map containing the mapping "plugin name -> filename"
 	std::map<QString, QString> m_PluginMap;
 
@@ -80,7 +82,7 @@ private:
 	// The QT object to actually load the plugins
 	QPluginLoader *m_PluginLoader;
 
-	QJsonObject m_MetaData;
+	std::shared_ptr<QJsonObject> m_MetaData;
 
 	//nomen est omen
 	bool m_isPluginLoaded;
@@ -88,9 +90,6 @@ private:
 	// List of all available plugins 
 	QStringList m_PluginList;
 
-	//Name of the currently loaded plugin
-	QString m_currentPluginName;
-
 	// Entire ListModel of the metadata (actually containing all metadata, not only name)
 	QStringListModel* m_PluginListModel;
 };