diff --git a/MultiMC.cpp b/MultiMC.cpp
index 258d7103..a75ccb13 100644
--- a/MultiMC.cpp
+++ b/MultiMC.cpp
@@ -376,6 +376,9 @@ void MultiMC::initGlobalSettings()
 	// Notifications
 	m_settings->registerSetting("ShownNotifications", QString());
 
+	// Remembered state
+	m_settings->registerSetting("LastUsedGroupForNewInstance", QString());
+
 	// FTB
 	m_settings->registerSetting("TrackFTBInstances", false);
 	QString ftbDataDefault;
diff --git a/gui/MainWindow.cpp b/gui/MainWindow.cpp
index c2c49967..a0c8388d 100644
--- a/gui/MainWindow.cpp
+++ b/gui/MainWindow.cpp
@@ -751,6 +751,8 @@ void MainWindow::on_actionAddInstance_triggered()
 	if (!newInstDlg.exec())
 		return;
 
+	MMC->settings()->set("LastUsedGroupForNewInstance", newInstDlg.instGroup());
+
 	InstancePtr newInstance;
 
 	QString instancesDir = MMC->settings()->get("InstanceDir").toString();
@@ -764,10 +766,14 @@ void MainWindow::on_actionAddInstance_triggered()
 	switch (error)
 	{
 	case InstanceFactory::NoCreateError:
+	{
 		newInstance->setName(newInstDlg.instName());
 		newInstance->setIconKey(newInstDlg.iconKey());
+		newInstance->setGroupInitial(newInstDlg.instGroup());
 		MMC->instances()->add(InstancePtr(newInstance));
+		stringToIntList(MMC->settings()->get("ShownNotifications").toString());
 		break;
+	}
 
 	case InstanceFactory::InstExists:
 	{
@@ -836,6 +842,7 @@ void MainWindow::on_actionCopyInstance_triggered()
 	{
 	case InstanceFactory::NoCreateError:
 		newInstance->setName(copyInstDlg.instName());
+		newInstance->setGroupInitial(copyInstDlg.instGroup());
 		newInstance->setIconKey(copyInstDlg.iconKey());
 		MMC->instances()->add(newInstance);
 		return;
diff --git a/gui/dialogs/CopyInstanceDialog.cpp b/gui/dialogs/CopyInstanceDialog.cpp
index de8cf3ce..6625460b 100644
--- a/gui/dialogs/CopyInstanceDialog.cpp
+++ b/gui/dialogs/CopyInstanceDialog.cpp
@@ -30,6 +30,7 @@
 #include "logic/icons/IconList.h"
 #include "logic/tasks/Task.h"
 #include "logic/BaseInstance.h"
+#include <logic/InstanceList.h>
 
 CopyInstanceDialog::CopyInstanceDialog(InstancePtr original, QWidget *parent)
 	:QDialog(parent), ui(new Ui::CopyInstanceDialog), m_original(original)
@@ -43,6 +44,19 @@ CopyInstanceDialog::CopyInstanceDialog(InstancePtr original, QWidget *parent)
 	ui->iconButton->setIcon(MMC->icons()->getIcon(InstIconKey));
 	ui->instNameTextBox->setText(original->name());
 	ui->instNameTextBox->setFocus();
+	auto groups = MMC->instances()->getGroups().toSet();
+	auto groupList = QStringList(groups.toList());
+	groupList.sort(Qt::CaseInsensitive);
+	groupList.removeOne("");
+	groupList.push_front("");
+	ui->groupBox->addItems(groupList);
+	int index = groupList.indexOf(m_original->group());
+	if(index == -1)
+	{
+		index = 0;
+	}
+	ui->groupBox->setCurrentIndex(index);
+	ui->groupBox->lineEdit()->setPlaceholderText(tr("No group"));
 }
 
 CopyInstanceDialog::~CopyInstanceDialog()
@@ -65,6 +79,11 @@ QString CopyInstanceDialog::iconKey() const
 	return InstIconKey;
 }
 
+QString CopyInstanceDialog::instGroup() const
+{
+	return ui->groupBox->currentText();
+}
+
 void CopyInstanceDialog::on_iconButton_clicked()
 {
 	IconPickerDialog dlg(this);
diff --git a/gui/dialogs/CopyInstanceDialog.h b/gui/dialogs/CopyInstanceDialog.h
index a8a4c3e4..0f3a2d48 100644
--- a/gui/dialogs/CopyInstanceDialog.h
+++ b/gui/dialogs/CopyInstanceDialog.h
@@ -37,6 +37,7 @@ public:
 	void updateDialogState();
 
 	QString instName() const;
+	QString instGroup() const;
 	QString iconKey() const;
 
 private
diff --git a/gui/dialogs/CopyInstanceDialog.ui b/gui/dialogs/CopyInstanceDialog.ui
index 4aa1cb27..2615168c 100644
--- a/gui/dialogs/CopyInstanceDialog.ui
+++ b/gui/dialogs/CopyInstanceDialog.ui
@@ -17,7 +17,7 @@
    <string>Copy Instance</string>
   </property>
   <property name="windowIcon">
-   <iconset resource="../../graphics.qrc">
+   <iconset>
     <normaloff>:/icons/toolbar/copy</normaloff>:/icons/toolbar/copy</iconset>
   </property>
   <property name="modal">
@@ -42,7 +42,7 @@
      <item>
       <widget class="QToolButton" name="iconButton">
        <property name="icon">
-        <iconset resource="../../graphics.qrc">
+        <iconset>
          <normaloff>:/icons/instances/infinity</normaloff>:/icons/instances/infinity</iconset>
        </property>
        <property name="iconSize">
@@ -82,6 +82,33 @@
      </property>
     </widget>
    </item>
+   <item>
+    <layout class="QGridLayout" name="gridLayout">
+     <item row="0" column="0">
+      <widget class="QLabel" name="labelVersion_3">
+       <property name="text">
+        <string>Group</string>
+       </property>
+       <property name="buddy">
+        <cstring>groupBox</cstring>
+       </property>
+      </widget>
+     </item>
+     <item row="0" column="1" colspan="2">
+      <widget class="QComboBox" name="groupBox">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="editable">
+        <bool>true</bool>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
    <item>
     <widget class="QDialogButtonBox" name="buttonBox">
      <property name="orientation">
diff --git a/gui/dialogs/NewInstanceDialog.cpp b/gui/dialogs/NewInstanceDialog.cpp
index 721d7931..aeaa7e4a 100644
--- a/gui/dialogs/NewInstanceDialog.cpp
+++ b/gui/dialogs/NewInstanceDialog.cpp
@@ -22,6 +22,7 @@
 #include "logic/icons/IconList.h"
 #include "logic/minecraft/MinecraftVersionList.h"
 #include "logic/tasks/Task.h"
+#include <logic/InstanceList.h>
 
 #include "gui/Platform.h"
 #include "VersionSelectDialog.h"
@@ -41,6 +42,21 @@ NewInstanceDialog::NewInstanceDialog(QWidget *parent)
 	setSelectedVersion(MMC->minecraftlist()->getLatestStable(), true);
 	InstIconKey = "infinity";
 	ui->iconButton->setIcon(MMC->icons()->getIcon(InstIconKey));
+	auto groups = MMC->instances()->getGroups().toSet();
+	auto groupList = QStringList(groups.toList());
+	groupList.sort(Qt::CaseInsensitive);
+	groupList.removeOne("");
+	QString oldValue = MMC->settings()->get("LastUsedGroupForNewInstance").toString();
+	groupList.push_front(oldValue);
+	groupList.push_front("");
+	ui->groupBox->addItems(groupList);
+	int index = groupList.indexOf(oldValue);
+	if(index == -1)
+	{
+		index = 0;
+	}
+	ui->groupBox->setCurrentIndex(index);
+	ui->groupBox->lineEdit()->setPlaceholderText(tr("No group"));
 }
 
 NewInstanceDialog::~NewInstanceDialog()
@@ -79,6 +95,11 @@ QString NewInstanceDialog::instName() const
 	return ui->instNameTextBox->text();
 }
 
+QString NewInstanceDialog::instGroup() const
+{
+	return ui->groupBox->currentText();
+}
+
 QString NewInstanceDialog::iconKey() const
 {
 	return InstIconKey;
@@ -118,3 +139,4 @@ void NewInstanceDialog::on_instNameTextBox_textChanged(const QString &arg1)
 {
 	updateDialogState();
 }
+
diff --git a/gui/dialogs/NewInstanceDialog.h b/gui/dialogs/NewInstanceDialog.h
index 90c85144..83cd78b3 100644
--- a/gui/dialogs/NewInstanceDialog.h
+++ b/gui/dialogs/NewInstanceDialog.h
@@ -39,6 +39,7 @@ public:
 	void loadVersionList();
 
 	QString instName() const;
+	QString instGroup() const;
 	QString iconKey() const;
 	BaseVersionPtr selectedVersion() const;
 
diff --git a/gui/dialogs/NewInstanceDialog.ui b/gui/dialogs/NewInstanceDialog.ui
index 00544463..be4642aa 100644
--- a/gui/dialogs/NewInstanceDialog.ui
+++ b/gui/dialogs/NewInstanceDialog.ui
@@ -9,15 +9,15 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>220</width>
-    <height>234</height>
+    <width>345</width>
+    <height>261</height>
    </rect>
   </property>
   <property name="windowTitle">
    <string>New Instance</string>
   </property>
   <property name="windowIcon">
-   <iconset resource="../../graphics.qrc">
+   <iconset>
     <normaloff>:/icons/toolbar/new</normaloff>:/icons/toolbar/new</iconset>
   </property>
   <property name="modal">
@@ -42,7 +42,7 @@
      <item>
       <widget class="QToolButton" name="iconButton">
        <property name="icon">
-        <iconset resource="../../graphics.qrc">
+        <iconset>
          <normaloff>:/icons/instances/infinity</normaloff>:/icons/instances/infinity</iconset>
        </property>
        <property name="iconSize">
@@ -83,25 +83,51 @@
     </widget>
    </item>
    <item>
-    <layout class="QHBoxLayout" name="horizontalLayout">
-     <item>
-      <widget class="QLabel" name="labelVersion">
+    <layout class="QGridLayout" name="gridLayout">
+     <item row="0" column="2">
+      <widget class="QToolButton" name="btnChangeVersion">
        <property name="text">
-        <string>Version:</string>
+        <string>...</string>
        </property>
       </widget>
      </item>
-     <item>
+     <item row="0" column="1">
       <widget class="QLineEdit" name="versionTextBox">
        <property name="readOnly">
         <bool>true</bool>
        </property>
       </widget>
      </item>
-     <item>
-      <widget class="QToolButton" name="btnChangeVersion">
+     <item row="0" column="0">
+      <widget class="QLabel" name="labelVersion">
        <property name="text">
-        <string>...</string>
+        <string>Version:</string>
+       </property>
+       <property name="buddy">
+        <cstring>versionTextBox</cstring>
+       </property>
+      </widget>
+     </item>
+     <item row="1" column="0">
+      <widget class="QLabel" name="labelVersion_3">
+       <property name="text">
+        <string>Group:</string>
+       </property>
+       <property name="buddy">
+        <cstring>groupBox</cstring>
+       </property>
+      </widget>
+     </item>
+     <item row="1" column="1" colspan="2">
+      <widget class="QComboBox" name="groupBox">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="editable">
+        <bool>true</bool>
        </property>
       </widget>
      </item>