diff --git a/application/MainWindow.cpp b/application/MainWindow.cpp
index 1409a924..6c5aa3af 100644
--- a/application/MainWindow.cpp
+++ b/application/MainWindow.cpp
@@ -1382,8 +1382,11 @@ void ShowPageDialog(T raw_provider, QWidget * parent, QString open_page = QStrin
 	auto provider = std::dynamic_pointer_cast<BasePageProvider>(raw_provider);
 	if(!provider)
 		return;
-	PageDialog dlg(provider, open_page, parent);
-	dlg.exec();
+	{
+		SettingsObject::Lock lock(MMC->settings());
+		PageDialog dlg(provider, open_page, parent);
+		dlg.exec();
+	}
 }
 
 void ShowInstancePageDialog(InstancePtr instance, QWidget * parent, QString open_page = QString())
diff --git a/application/pages/global/ExternalToolsPage.cpp b/application/pages/global/ExternalToolsPage.cpp
index 66d91a46..26b2f31e 100644
--- a/application/pages/global/ExternalToolsPage.cpp
+++ b/application/pages/global/ExternalToolsPage.cpp
@@ -62,8 +62,6 @@ void ExternalToolsPage::applySettings()
 {
 	auto s = MMC->settings();
 
-	SettingsObject::Lock lock(s);
-
 	s->set("JProfilerPath", ui->jprofilerPathEdit->text());
 	s->set("JVisualVMPath", ui->jvisualvmPathEdit->text());
 	s->set("MCEditPath", ui->mceditPathEdit->text());
diff --git a/application/pages/global/JavaPage.cpp b/application/pages/global/JavaPage.cpp
index 474d73d6..9b35d1f3 100644
--- a/application/pages/global/JavaPage.cpp
+++ b/application/pages/global/JavaPage.cpp
@@ -59,8 +59,6 @@ void JavaPage::applySettings()
 {
 	auto s = MMC->settings();
 
-	SettingsObject::Lock lock(s);
-
 	// Memory
 	s->set("MinMemAlloc", ui->minMemSpinBox->value());
 	s->set("MaxMemAlloc", ui->maxMemSpinBox->value());
diff --git a/application/pages/global/MinecraftPage.cpp b/application/pages/global/MinecraftPage.cpp
index c08f9140..57f40ae6 100644
--- a/application/pages/global/MinecraftPage.cpp
+++ b/application/pages/global/MinecraftPage.cpp
@@ -62,8 +62,6 @@ void MinecraftPage::applySettings()
 {
 	auto s = MMC->settings();
 
-	SettingsObject::Lock lock(s);
-
 	// Window Size
 	s->set("LaunchMaximized", ui->maximizedCheckBox->isChecked());
 	s->set("MinecraftWinWidth", ui->windowWidthSpinBox->value());
diff --git a/application/pages/global/MultiMCPage.cpp b/application/pages/global/MultiMCPage.cpp
index 1517b6e9..65f258b5 100644
--- a/application/pages/global/MultiMCPage.cpp
+++ b/application/pages/global/MultiMCPage.cpp
@@ -248,8 +248,6 @@ void MultiMCPage::applySettings()
 {
 	auto s = MMC->settings();
 
-	SettingsObject::Lock lock(s);
-
 	// Language
 	s->set("Language",
 		   ui->languageBox->itemData(ui->languageBox->currentIndex()).toLocale().bcp47Name());
diff --git a/application/pages/global/ProxyPage.cpp b/application/pages/global/ProxyPage.cpp
index f998fb4b..f18f7049 100644
--- a/application/pages/global/ProxyPage.cpp
+++ b/application/pages/global/ProxyPage.cpp
@@ -57,8 +57,6 @@ void ProxyPage::applySettings()
 {
 	auto s = MMC->settings();
 
-	SettingsObject::Lock lock(s);
-
 	// Proxy
 	QString proxyType = "None";
 	if (ui->proxyDefaultBtn->isChecked())
diff --git a/logic/ftb/FTBPlugin.cpp b/logic/ftb/FTBPlugin.cpp
index 0130b41e..aa2c3ca9 100644
--- a/logic/ftb/FTBPlugin.cpp
+++ b/logic/ftb/FTBPlugin.cpp
@@ -213,26 +213,27 @@ InstancePtr createInstance(SettingsObjectPtr globalSettings, QMap<QString, QStri
 	{
 		m_settings->set("InstanceType", "LegacyFTB");
 		inst.reset(new LegacyFTBInstance(globalSettings, m_settings, record.instanceDir));
-		inst->setIntendedVersionId(mcVersion->descriptor());
 	}
 	else
 	{
 		m_settings->set("InstanceType", "OneSixFTB");
 		inst.reset(new OneSixFTBInstance(globalSettings, m_settings, record.instanceDir));
+	}
+	// initialize
+	{
+		SettingsObject::Lock lock(inst->settings());
 		inst->setIntendedVersionId(mcVersion->descriptor());
 		inst->init();
+		inst->setGroupInitial("FTB");
+		inst->setName(record.name);
+		inst->setIconKey(record.iconKey);
+		inst->setNotes(record.description);
+		qDebug() << "Post-Process " << record.instanceDir;
+		if (!InstanceList::continueProcessInstance(inst, InstanceList::NoCreateError, record.instanceDir, groupMap))
+		{
+			return nullptr;
+		}
 	}
-	inst->setGroupInitial("FTB");
-	inst->setName(record.name);
-	inst->setIconKey(record.iconKey);
-	inst->setIntendedVersionId(record.mcVersion);
-	inst->setNotes(record.description);
-	qDebug() << "Post-Process " << record.instanceDir;
-	if (!InstanceList::continueProcessInstance(inst, InstanceList::NoCreateError, record.instanceDir, groupMap))
-	{
-		return nullptr;
-	}
-
 	return inst;
 }