diff --git a/applications/platform/designer/src/ovdCBoxConfigurationDialog.cpp b/applications/platform/designer/src/ovdCBoxConfigurationDialog.cpp
index 10d5b3fee64278397a36cf02ca22b6cfe12f928a..53ab069fe52f81d12a2143ccd0508cca54cc4631 100644
--- a/applications/platform/designer/src/ovdCBoxConfigurationDialog.cpp
+++ b/applications/platform/designer/src/ovdCBoxConfigurationDialog.cpp
@@ -5,6 +5,7 @@
 #include <string>
 #include <fstream>
 #include <iostream>
+#include <cstring>
 
 #include <xml/IReader.h>
 #include <xml/IWriter.h>
@@ -46,6 +47,15 @@ static void on_button_save_clicked(::GtkButton* pButton, gpointer pUserData)
 	static_cast<CBoxConfigurationDialog *>(pUserData)->saveConfiguration();
 }
 
+static void on_override_browse_clicked(::GtkButton* pButton, gpointer pUserData)
+{
+	static_cast<CBoxConfigurationDialog *>(pUserData)->onOverrideBrowse();
+}
+
+static void collect_widget_cb(::GtkWidget* pWidget, gpointer pUserData)
+{
+	static_cast< std::vector< ::GtkWidget* > *>(pUserData)->push_back(pWidget);
+}
 // ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- -----------
 
 CBoxConfigurationDialog::CBoxConfigurationDialog(const IKernelContext& rKernelContext, IBox& rBox, const char* sGUIFilename, const char* sGUISettingsFilename, bool bMode)
@@ -59,8 +69,6 @@ CBoxConfigurationDialog::CBoxConfigurationDialog(const IKernelContext& rKernelCo
 	,m_oSettingFactory(m_sGUISettingsFilename.toASCIIString(), rKernelContext)
 	,m_pFileOverrideCheck(NULL)
 {
-	m_pHelper = new CSettingCollectionHelper(m_rKernelContext, m_sGUISettingsFilename.toASCIIString());
-
 	if(m_rBox.getSettingCount())
 	{
 		::GtkBuilder* l_pBuilderInterfaceSetting=gtk_builder_new(); // glade_xml_new(m_sGUIFilename.toASCIIString(), "box_configuration", NULL);
@@ -107,18 +115,21 @@ CBoxConfigurationDialog::CBoxConfigurationDialog(const IKernelContext& rKernelCo
 		// If a scenario is not running, we add the buttons to save/load etc
 		if (!m_bIsScenarioRunning)
 		{
-			string l_sSettingOverrideWidgetName=m_pHelper->getSettingWidgetName(OV_TypeId_Filename).toASCIIString();
 			::GtkBuilder* l_pBuilderInterfaceSettingCollection=gtk_builder_new(); // glade_xml_new(m_sGUIFilename.toASCIIString(), l_sSettingOverrideWidgetName.c_str(), NULL);
 			gtk_builder_add_from_file(l_pBuilderInterfaceSettingCollection, m_sGUISettingsFilename.toASCIIString(), NULL);
 			gtk_builder_connect_signals(l_pBuilderInterfaceSettingCollection, NULL);
 
-			//::GtkWidget* l_pSettingOverrideValue=GTK_WIDGET(gtk_builder_get_object(l_pBuilderInterfaceSettingCollection, l_sSettingOverrideWidgetName.c_str()));
-			m_pSettingOverrideValue=GTK_WIDGET(gtk_builder_get_object(l_pBuilderInterfaceSettingCollection, l_sSettingOverrideWidgetName.c_str()));
+			::GtkWidget* l_pSettingOverrideValue = GTK_WIDGET(gtk_builder_get_object(l_pBuilderInterfaceSettingCollection, "settings_collection-hbox_setting_filename"));
 
-			gtk_container_remove(GTK_CONTAINER(gtk_widget_get_parent(m_pSettingOverrideValue)), m_pSettingOverrideValue);
-			gtk_container_add(l_pFileOverrideContainer, m_pSettingOverrideValue);
+			std::vector < ::GtkWidget* > l_vWidget;
+			gtk_container_foreach(GTK_CONTAINER(l_pSettingOverrideValue), collect_widget_cb, &l_vWidget);
+			m_pOverrideEntry = GTK_ENTRY(l_vWidget[0]);
+
+			gtk_container_remove(GTK_CONTAINER(gtk_widget_get_parent(l_pSettingOverrideValue)), l_pSettingOverrideValue);
+			gtk_container_add(l_pFileOverrideContainer, l_pSettingOverrideValue);
 
 			g_signal_connect(G_OBJECT(m_pFileOverrideCheck), "toggled", G_CALLBACK(on_file_override_check_toggled), GTK_WIDGET(m_pSettingsTable));
+			g_signal_connect(G_OBJECT(l_vWidget[1]),         "clicked", G_CALLBACK(on_override_browse_clicked), this);
 			g_signal_connect(G_OBJECT(l_pButtonLoad),        "clicked", G_CALLBACK(on_button_load_clicked), this);
 			g_signal_connect(G_OBJECT(l_pButtonSave),        "clicked", G_CALLBACK(on_button_save_clicked), this);
 
@@ -127,13 +138,13 @@ CBoxConfigurationDialog::CBoxConfigurationDialog(const IKernelContext& rKernelCo
 				::GtkExpander *l_pExpander = GTK_EXPANDER(gtk_builder_get_object(l_pBuilderInterfaceSetting, "box_configuration-expander"));
 				gtk_expander_set_expanded(l_pExpander, true);
 
-				m_pHelper->setValue(OV_TypeId_Filename, m_pSettingOverrideValue, m_rBox.getAttributeValue(OV_AttributeId_Box_SettingOverrideFilename));
+				gtk_entry_set_text( m_pOverrideEntry, m_rBox.getAttributeValue(OV_AttributeId_Box_SettingOverrideFilename).toASCIIString());
 				gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(m_pFileOverrideCheck), true);
 				gtk_widget_set_sensitive(GTK_WIDGET(m_pSettingsTable), false);
 			}
 			else
 			{
-				m_pHelper->setValue(OV_TypeId_Filename, m_pSettingOverrideValue, "");
+				gtk_entry_set_text( m_pOverrideEntry, "");
 			}
 
 			g_object_unref(l_pBuilderInterfaceSetting);
@@ -169,12 +180,6 @@ CBoxConfigurationDialog::~CBoxConfigurationDialog(void)
 		m_pWidget = NULL;
 	}
 
-	if(m_pHelper) 
-	{
-		delete m_pHelper;
-		m_pHelper = NULL;
-	}
-
 	m_rBox.deleteObserver(this);
 }
 
@@ -244,13 +249,14 @@ boolean CBoxConfigurationDialog::run(bool bMode)
 
 			if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(m_pFileOverrideCheck)))
 			{
+				const gchar* l_sFilename = gtk_entry_get_text(m_pOverrideEntry);
 				if(m_rBox.hasAttribute(OV_AttributeId_Box_SettingOverrideFilename))
 				{
-					m_rBox.setAttributeValue(OV_AttributeId_Box_SettingOverrideFilename, m_pHelper->getValue(OV_TypeId_Filename, m_pSettingOverrideValue));
+					m_rBox.setAttributeValue(OV_AttributeId_Box_SettingOverrideFilename, l_sFilename);
 				}
 				else
 				{
-					m_rBox.addAttribute(OV_AttributeId_Box_SettingOverrideFilename, m_pHelper->getValue(OV_TypeId_Filename, m_pSettingOverrideValue));
+					m_rBox.addAttribute(OV_AttributeId_Box_SettingOverrideFilename, l_sFilename);
 				}
 			}
 			else
@@ -285,7 +291,7 @@ boolean CBoxConfigurationDialog::run(bool bMode)
 				}
 			}
 
-			m_pHelper->setValue(OV_TypeId_Filename, m_pSettingOverrideValue, "");
+			gtk_entry_set_text( m_pOverrideEntry, "");
 			gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(m_pFileOverrideCheck), false);
 			gtk_widget_set_sensitive(GTK_WIDGET(l_pSettingTable), true);
 			l_bModified=false;
@@ -297,7 +303,7 @@ boolean CBoxConfigurationDialog::run(bool bMode)
 			m_rBox.restoreState();
 			if(m_rBox.hasAttribute(OV_AttributeId_Box_SettingOverrideFilename))
 			{
-				m_pHelper->setValue(OV_TypeId_Filename, m_pSettingOverrideValue, m_rBox.getAttributeValue(OV_AttributeId_Box_SettingOverrideFilename));
+				gtk_entry_set_text(m_pOverrideEntry, m_rBox.getAttributeValue(OV_AttributeId_Box_SettingOverrideFilename).toASCIIString());
 				gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(m_pFileOverrideCheck), true);
 				gtk_widget_set_sensitive(GTK_WIDGET(l_pSettingTable), false);
 			}
@@ -587,6 +593,45 @@ uint32 CBoxConfigurationDialog::getTableSize()
 	return m_vSettingWrappers.size();
 }
 
+void CBoxConfigurationDialog::onOverrideBrowse()
+{
+	::GtkWidget* l_pWidgetDialogOpen=gtk_file_chooser_dialog_new(
+		"Select file to open...",
+		NULL,
+		GTK_FILE_CHOOSER_ACTION_SAVE,
+		GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
+		GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
+		NULL);
+
+	CString l_sInitialFileName=m_rKernelContext.getConfigurationManager().expand(gtk_entry_get_text(m_pOverrideEntry));
+	if(g_path_is_absolute(l_sInitialFileName.toASCIIString()))
+	{
+		gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(l_pWidgetDialogOpen), l_sInitialFileName.toASCIIString());
+	}
+	else
+	{
+		char* l_sFullPath=g_build_filename(g_get_current_dir(), l_sInitialFileName.toASCIIString(), NULL);
+		gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(l_pWidgetDialogOpen), l_sFullPath);
+		g_free(l_sFullPath);
+	}
+
+	gtk_file_chooser_set_do_overwrite_confirmation(GTK_FILE_CHOOSER(l_pWidgetDialogOpen), false);
+
+	if(gtk_dialog_run(GTK_DIALOG(l_pWidgetDialogOpen))==GTK_RESPONSE_ACCEPT)
+	{
+		char* l_sFileName=gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(l_pWidgetDialogOpen));
+		char* l_pBackslash = NULL;
+		while((l_pBackslash = ::strchr(l_sFileName, '\\'))!=NULL)
+		{
+			*l_pBackslash = '/';
+		}
+
+		gtk_entry_set_text(m_pOverrideEntry, l_sFileName);
+		g_free(l_sFileName);
+	}
+	gtk_widget_destroy(l_pWidgetDialogOpen);
+}
+
 
 
 void CBoxConfigurationDialog::updateSize()
@@ -616,7 +661,7 @@ void CBoxConfigurationDialog::saveConfiguration()
 		GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
 		NULL);
 
-	CString l_sInitialFileNameToExpand = m_pHelper->getValue(OV_TypeId_Filename, m_pSettingOverrideValue);
+	const gchar* l_sInitialFileNameToExpand = gtk_entry_get_text(m_pOverrideEntry);
 	CString l_sInitialFileName=m_rKernelContext.getConfigurationManager().expand(l_sInitialFileNameToExpand);
 	if(g_path_is_absolute(l_sInitialFileName.toASCIIString()))
 	{
@@ -665,7 +710,8 @@ void CBoxConfigurationDialog::loadConfiguration()
 		GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
 		NULL);
 
-	CString l_sInitialFileNameToExpand = m_pHelper->getValue(OV_TypeId_Filename, m_pSettingOverrideValue);
+	const gchar* l_sInitialFileNameToExpand = gtk_entry_get_text(m_pOverrideEntry);
+
 	CString l_sInitialFileName=m_rKernelContext.getConfigurationManager().expand(l_sInitialFileNameToExpand);
 	if(g_path_is_absolute(l_sInitialFileName.toASCIIString()))
 	{
diff --git a/applications/platform/designer/src/ovdCBoxConfigurationDialog.h b/applications/platform/designer/src/ovdCBoxConfigurationDialog.h
index 07273e347bc8ace6f9c9c8c48246d3819f717293..1153acec61d0ea0a5ddeed47310859ce544eb6e2 100644
--- a/applications/platform/designer/src/ovdCBoxConfigurationDialog.h
+++ b/applications/platform/designer/src/ovdCBoxConfigurationDialog.h
@@ -6,7 +6,6 @@
 #include <string>
 #include <vector>
 #include <map>
-#include "ovdCSettingCollectionHelper.h"
 #include "settings/ovdCAbstractSettingView.h"
 #include "settings/ovdCSettingViewFactory.h"
 
@@ -38,6 +37,7 @@ namespace OpenViBEDesigner
 		void updateSize();
 		void saveConfiguration();
 		void loadConfiguration();
+		void onOverrideBrowse(void);
 
 	protected:
 		void generateSettingsTable(void);
@@ -51,6 +51,8 @@ namespace OpenViBEDesigner
 		OpenViBE::uint32 getTableIndex(OpenViBE::uint32 ui32SettingIndex);
 		OpenViBE::uint32 getTableSize(void);
 
+
+
 		const OpenViBE::Kernel::IKernelContext& m_rKernelContext;
 		OpenViBE::Kernel::IBox& m_rBox;
 		OpenViBE::CString m_sGUIFilename;
@@ -58,7 +60,8 @@ namespace OpenViBEDesigner
 		//
 		::GtkWidget* m_pWidget;//widget with the dialog for configuration (used whole for box config when no scenario is running)
 		::GtkWidget* m_pWidgetToReturn; //child of m_oWidget, if we are running a scenario, this is the widget we need, the rest can be discarded
-		::GtkWidget* m_pSettingOverrideValue;
+
+		::GtkEntry* m_pOverrideEntry;
 
 		::GtkTable *m_pSettingsTable;
 		::GtkViewport *m_pViewPort;
@@ -73,9 +76,8 @@ namespace OpenViBEDesigner
 
 		std::vector<CSettingViewWrapper> m_vSettingWrappers;
 
-		CSettingCollectionHelper* m_pHelper;
 		::GtkCheckButton* m_pFileOverrideCheck;
 	};
-};
+}
 
 #endif // __OpenViBEDesigner_CBoxConfigurationDialog_H__
diff --git a/applications/platform/designer/src/settings/ovdCEnumerationSettingView.cpp b/applications/platform/designer/src/settings/ovdCEnumerationSettingView.cpp
index ffb8869b3dbd9693cb6e979b8f85236f16493d24..5e592f0b4cbf20fb66ada04f269e9f14bac7f200 100644
--- a/applications/platform/designer/src/settings/ovdCEnumerationSettingView.cpp
+++ b/applications/platform/designer/src/settings/ovdCEnumerationSettingView.cpp
@@ -68,8 +68,9 @@ void CEnumerationSettingView::onChange()
 {
 	if(!m_bOnValueSetting)
 	{
-		const gchar* l_sValue = gtk_combo_box_get_active_text(m_pComboBox);
+		gchar* l_sValue = gtk_combo_box_get_active_text(m_pComboBox);
 		getBox().setSettingValue(getSettingsIndex(), l_sValue);
+		g_free(l_sValue);
 	}
 }
 
diff --git a/applications/platform/designer/src/settings/ovdCSettingViewFactory.h b/applications/platform/designer/src/settings/ovdCSettingViewFactory.h
index 1b0660bc29f4a35785e15427fc00e54d6ad39e58..aef39501783ca0501e2addbb6a63afe247a89b8a 100644
--- a/applications/platform/designer/src/settings/ovdCSettingViewFactory.h
+++ b/applications/platform/designer/src/settings/ovdCSettingViewFactory.h
@@ -16,6 +16,8 @@ namespace OpenViBEDesigner
 			CAbstractSettingView* getSettingView(OpenViBE::Kernel::IBox &rBox,
 												 OpenViBE::uint32 ui32Index);
 
+			CAbstractSettingView* getSettingView(OpenViBE::CIdentifier &rIdentifierType);
+
 		private:
 			::GtkBuilder* m_pBuilder;
 			OpenViBE::CString m_sBuilderName;
diff --git a/kernel/src/kernel/scenario/ovkCBox.cpp b/kernel/src/kernel/scenario/ovkCBox.cpp
index ad6bbc93ca189fd9f64b12c9ddf998a86f0dcad6..d9c5b38483051f617424a316c0de65e6085436bc 100644
--- a/kernel/src/kernel/scenario/ovkCBox.cpp
+++ b/kernel/src/kernel/scenario/ovkCBox.cpp
@@ -22,6 +22,7 @@ CBox::CBox(const IKernelContext& rKernelContext, CScenario& rOwnerScenario)
 	,m_pBoxListener(NULL)
 	,m_bIsNotifyingDescriptor(false)
 	,m_bIsNotificationActive(true)
+	,m_bIsObserverNotificationActive(true)
 	,m_oIdentifier(OV_UndefinedIdentifier)
 	,m_oAlgorithmClassIdentifier(OV_UndefinedIdentifier)
 	,m_oProcessingUnitIdentifier(OV_UndefinedIdentifier)
@@ -202,6 +203,7 @@ boolean CBox::initializeFromExistingBox(
 	uint32 i;
 
 	this->disableNotification();
+	m_bIsObserverNotificationActive = false;
 
 	clear();
 	setName(rExistingBox.getName());
@@ -267,6 +269,7 @@ boolean CBox::initializeFromExistingBox(
 
 	this->notify(BoxModification_Initialized);
 
+	m_bIsObserverNotificationActive = true;
 	this->notifySettingChange(SettingsAllChange);
 
 	return true;
@@ -907,7 +910,7 @@ boolean CBox::setSettingValue(
 
 void CBox::notifySettingChange(BoxEventMessageType eType, int32 i32FirstIndex, int32 i32SecondIndex)
 {
-	if( m_bIsNotificationActive)
+	if( m_bIsNotificationActive && m_bIsObserverNotificationActive)
 	{
 		BoxEventMessage l_oEvent;
 		l_oEvent.m_eType = eType;
diff --git a/kernel/src/kernel/scenario/ovkCBox.h b/kernel/src/kernel/scenario/ovkCBox.h
index d3cc6c79b3626e7165c693fd8599de0409c175a0..f624030a773c1f00b64529206321bd3032f74cd9 100644
--- a/kernel/src/kernel/scenario/ovkCBox.h
+++ b/kernel/src/kernel/scenario/ovkCBox.h
@@ -267,6 +267,7 @@ namespace OpenViBE
 			OpenViBE::Plugins::IBoxListener* m_pBoxListener;
 			OpenViBE::boolean m_bIsNotifyingDescriptor;
 			OpenViBE::boolean m_bIsNotificationActive;
+			OpenViBE::boolean m_bIsObserverNotificationActive;
 
 			OpenViBE::CIdentifier m_oIdentifier;
 			OpenViBE::CIdentifier m_oAlgorithmClassIdentifier;