diff --git a/module/META-INF/plugin.xml b/module/META-INF/plugin.xml
index 21c3f65e0..5c8f2e4a6 100644
--- a/module/META-INF/plugin.xml
+++ b/module/META-INF/plugin.xml
@@ -18,6 +18,7 @@
-->
+
diff --git a/module/src/com/intellij/tutorials/module/DemoModuleBuilder.java b/module/src/com/intellij/tutorials/module/DemoModuleBuilder.java
new file mode 100644
index 000000000..23417dcbc
--- /dev/null
+++ b/module/src/com/intellij/tutorials/module/DemoModuleBuilder.java
@@ -0,0 +1,31 @@
+package com.intellij.tutorials.module;
+
+import com.intellij.ide.util.projectWizard.ModuleBuilder;
+import com.intellij.ide.util.projectWizard.ModuleWizardStep;
+import com.intellij.ide.util.projectWizard.WizardContext;
+import com.intellij.openapi.Disposable;
+import com.intellij.openapi.module.ModuleType;
+import com.intellij.openapi.options.ConfigurationException;
+import com.intellij.openapi.roots.ModifiableRootModel;
+import org.jetbrains.annotations.Nullable;
+
+/**
+ * @author Anna Bulenkova
+ */
+public class DemoModuleBuilder extends ModuleBuilder {
+ @Override
+ public void setupRootModel(ModifiableRootModel model) throws ConfigurationException {
+
+ }
+
+ @Override
+ public ModuleType getModuleType() {
+ return DemoModuleType.getInstance();
+ }
+
+ @Nullable
+ @Override
+ public ModuleWizardStep getCustomOptionsStep(WizardContext context, Disposable parentDisposable) {
+ return new DemoModuleWizardStep();
+ }
+}
diff --git a/module/src/com/intellij/tutorials/module/DemoModuleType.java b/module/src/com/intellij/tutorials/module/DemoModuleType.java
new file mode 100644
index 000000000..9733741f0
--- /dev/null
+++ b/module/src/com/intellij/tutorials/module/DemoModuleType.java
@@ -0,0 +1,60 @@
+package com.intellij.tutorials.module;
+
+import com.intellij.icons.AllIcons;
+import com.intellij.ide.util.projectWizard.ModuleWizardStep;
+import com.intellij.ide.util.projectWizard.WizardContext;
+import com.intellij.openapi.module.ModuleType;
+import com.intellij.openapi.module.ModuleTypeManager;
+import com.intellij.openapi.roots.ui.configuration.ModulesProvider;
+import org.jetbrains.annotations.NotNull;
+
+import javax.swing.*;
+
+/**
+ * @author Anna Bulenkova
+ */
+public class DemoModuleType extends ModuleType {
+ private static final String ID = "DEMO_MODULE_TYPE";
+
+ public DemoModuleType() {
+ super(ID);
+ }
+
+ public static DemoModuleType getInstance() {
+ return (DemoModuleType) ModuleTypeManager.getInstance().findByID(ID);
+ }
+
+ @NotNull
+ @Override
+ public DemoModuleBuilder createModuleBuilder() {
+ return new DemoModuleBuilder();
+ }
+
+ @NotNull
+ @Override
+ public String getName() {
+ return "Demo";
+ }
+
+ @NotNull
+ @Override
+ public String getDescription() {
+ return "Demo Module Type";
+ }
+
+ @Override
+ public Icon getBigIcon() {
+ return AllIcons.General.Information;
+ }
+
+ @Override
+ public Icon getNodeIcon(@Deprecated boolean b) {
+ return AllIcons.General.Information;
+ }
+
+ @NotNull
+ @Override
+ public ModuleWizardStep[] createWizardSteps(@NotNull WizardContext wizardContext, @NotNull DemoModuleBuilder moduleBuilder, @NotNull ModulesProvider modulesProvider) {
+ return super.createWizardSteps(wizardContext, moduleBuilder, modulesProvider);
+ }
+}
diff --git a/module/src/com/intellij/tutorials/module/DemoModuleWizardStep.java b/module/src/com/intellij/tutorials/module/DemoModuleWizardStep.java
new file mode 100644
index 000000000..4227d9e4d
--- /dev/null
+++ b/module/src/com/intellij/tutorials/module/DemoModuleWizardStep.java
@@ -0,0 +1,20 @@
+package com.intellij.tutorials.module;
+
+import com.intellij.ide.util.projectWizard.ModuleWizardStep;
+
+import javax.swing.*;
+
+/**
+ * @author Anna Bulenkova
+ */
+public class DemoModuleWizardStep extends ModuleWizardStep {
+ @Override
+ public JComponent getComponent() {
+ return new JLabel("Provide some setting here");
+ }
+
+ @Override
+ public void updateDataModel() {
+ //todo update model according to UI
+ }
+}