diff --git a/experiments/backend.native/backend.native.patch b/experiments/backend.native/backend.native.patch
new file mode 100644
index 00000000000..e807e9881aa
--- /dev/null
+++ b/experiments/backend.native/backend.native.patch
@@ -0,0 +1,34 @@
+diff --git a/compiler/backend/backend.iml b/compiler/backend/backend.iml
+index 35bbf20..cfbb3dc 100644
+--- a/compiler/backend/backend.iml
++++ b/compiler/backend/backend.iml
+@@ -15,5 +15,6 @@
+
+
+
++
+
+
+\ No newline at end of file
+diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/state/GenerationState.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/state/GenerationState.kt
+index 39077d2..f0cbb87 100644
+--- a/compiler/backend/src/org/jetbrains/kotlin/codegen/state/GenerationState.kt
++++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/state/GenerationState.kt
+@@ -20,6 +20,7 @@ import com.intellij.openapi.project.Project
+ import com.intellij.openapi.util.ModificationTracker
+ import com.intellij.psi.PsiElement
+ import org.jetbrains.kotlin.backend.jvm.JvmIrCodegenFactory
++import org.jetbrains.kotlin.backend.native.NativeIrCodegenFactory
+ import org.jetbrains.kotlin.builtins.ReflectionTypes
+ import org.jetbrains.kotlin.codegen.*
+ import org.jetbrains.kotlin.codegen.`when`.MappingsClassesForWhenByEnum
+@@ -69,7 +70,8 @@ class GenerationState @JvmOverloads constructor(
+ // TODO: get rid of it with the proper module infrastructure
+ val outDirectory: File? = null,
+ private val onIndependentPartCompilationEnd: GenerationStateEventCallback = GenerationStateEventCallback.DO_NOTHING,
+- val codegenFactory: CodegenFactory = if (configuration.getBoolean(JVMConfigurationKeys.IR)) JvmIrCodegenFactory else DefaultCodegenFactory
++ //val codegenFactory: CodegenFactory = if (configuration.getBoolean(JVMConfigurationKeys.IR)) NativeIrCodegenFactory else DefaultCodegenFactory
++ val codegenFactory: CodegenFactory = NativeIrCodegenFactory
+ ) {
+ abstract class GenerateClassFilter {
+ abstract fun shouldAnnotateClass(processingClassOrObject: KtClassOrObject): Boolean
diff --git a/experiments/backend.native/bc.frontend/build.gradle b/experiments/backend.native/bc.frontend/build.gradle
new file mode 100644
index 00000000000..02f67980c44
--- /dev/null
+++ b/experiments/backend.native/bc.frontend/build.gradle
@@ -0,0 +1,11 @@
+buildscript {
+ ext.kotlin_version = '1.0.3'
+ repositories {
+ mavenCentral()
+ }
+ dependencies {
+ classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.0.3"
+ }
+}
+apply plugin: 'java'
+apply plugin: 'kotlin'
\ No newline at end of file
diff --git a/experiments/backend.native/build.gradle b/experiments/backend.native/build.gradle
new file mode 100644
index 00000000000..ca1d8289770
--- /dev/null
+++ b/experiments/backend.native/build.gradle
@@ -0,0 +1,57 @@
+buildscript {
+ ext.kotlin_version = '1.0.3'
+ repositories {
+ mavenCentral()
+ }
+
+ dependencies {
+ classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
+ }
+
+}
+
+apply plugin: 'java'
+apply plugin: 'kotlin'
+
+
+dependencies {
+ compile files('../kotlin-ir/dist//kotlin-build-common-sources.jar',
+ '../kotlin-ir/dist//kotlin-compiler-before-shrink.jar',
+ '../kotlin-ir/dist//kotlin-compiler-for-maven.jar',
+ '../kotlin-ir/dist//kotlin-compiler-javadoc.jar',
+ '../kotlin-ir/dist//kotlin-compiler-sources.jar',
+ '../kotlin-ir/dist//kotlin-mock-runtime-for-test.jar',
+ '../kotlin-ir/dist//kotlin-reflect-before-jarjar.jar',
+ '../kotlin-ir/dist//kotlin-reflect-jarjar.jar',
+ '../kotlin-ir/dist//kotlin-reflect-sources-for-maven.jar',
+ '../kotlin-ir/dist//kotlinc/lib/android-extensions-compiler.jar',
+ '../kotlin-ir/dist//kotlinc/lib/kotlin-annotation-processing.jar',
+ '../kotlin-ir/dist//kotlinc/lib/kotlin-ant.jar',
+ '../kotlin-ir/dist//kotlinc/lib/kotlin-build-common-test.jar',
+ '../kotlin-ir/dist//kotlinc/lib/kotlin-build-common.jar',
+ '../kotlin-ir/dist//kotlinc/lib/kotlin-compiler.jar',
+ '../kotlin-ir/dist//kotlinc/lib/kotlin-daemon-client.jar',
+ '../kotlin-ir/dist//kotlinc/lib/kotlin-jslib-sources.jar',
+ '../kotlin-ir/dist//kotlinc/lib/kotlin-jslib.jar',
+ '../kotlin-ir/dist//kotlinc/lib/kotlin-preloader.jar',
+ '../kotlin-ir/dist//kotlinc/lib/kotlin-reflect-internal-bootstrap.jar',
+ '../kotlin-ir/dist//kotlinc/lib/kotlin-reflect.jar',
+ '../kotlin-ir/dist//kotlinc/lib/kotlin-runner.jar',
+ '../kotlin-ir/dist//kotlinc/lib/kotlin-runtime-internal-bootstrap.jar',
+ '../kotlin-ir/dist//kotlinc/lib/kotlin-runtime-sources.jar',
+ '../kotlin-ir/dist//kotlinc/lib/kotlin-runtime.jar',
+ '../kotlin-ir/dist//kotlinc/lib/kotlin-test-internal-bootstrap.jar',
+ '../kotlin-ir/dist//kotlinc/lib/kotlin-test.jar')
+}
+
+sourceSets {
+ main.java.srcDirs += 'compiler/ir/backend.native/src/'
+ main.kotlin.srcDirs += 'compiler/ir/backend.native/src/'
+}
+
+task jars {
+ project.buildscript.configurations.classpath.each {
+ String jarName = it.getName();
+ print jarName + ":"
+ }
+}
\ No newline at end of file
diff --git a/experiments/backend.native/cli.bc/.log b/experiments/backend.native/cli.bc/.log
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/experiments/backend.native/cli.bc/build.gradle b/experiments/backend.native/cli.bc/build.gradle
new file mode 100644
index 00000000000..cae496d406e
--- /dev/null
+++ b/experiments/backend.native/cli.bc/build.gradle
@@ -0,0 +1,57 @@
+buildscript {
+ ext.kotlin_version = '1.0.3'
+ repositories {
+ mavenCentral()
+ }
+
+ dependencies {
+ classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
+ }
+
+}
+
+apply plugin: 'java'
+apply plugin: 'kotlin'
+
+
+dependencies {
+ compile files('../../kotlin-ir/dist//kotlin-build-common-sources.jar',
+ '../../kotlin-ir/dist//kotlin-compiler-before-shrink.jar',
+ '../../kotlin-ir/dist//kotlin-compiler-for-maven.jar',
+ '../../kotlin-ir/dist//kotlin-compiler-javadoc.jar',
+ '../../kotlin-ir/dist//kotlin-compiler-sources.jar',
+ '../../kotlin-ir/dist//kotlin-mock-runtime-for-test.jar',
+ '../../kotlin-ir/dist//kotlin-reflect-before-jarjar.jar',
+ '../../kotlin-ir/dist//kotlin-reflect-jarjar.jar',
+ '../../kotlin-ir/dist//kotlin-reflect-sources-for-maven.jar',
+ '../../kotlin-ir/dist//kotlinc/lib/android-extensions-compiler.jar',
+ '../../kotlin-ir/dist//kotlinc/lib/kotlin-annotation-processing.jar',
+ '../../kotlin-ir/dist//kotlinc/lib/kotlin-ant.jar',
+ '../../kotlin-ir/dist//kotlinc/lib/kotlin-build-common-test.jar',
+ '../../kotlin-ir/dist//kotlinc/lib/kotlin-build-common.jar',
+ '../../kotlin-ir/dist//kotlinc/lib/kotlin-compiler.jar',
+ '../../kotlin-ir/dist//kotlinc/lib/kotlin-daemon-client.jar',
+ '../../kotlin-ir/dist//kotlinc/lib/kotlin-jslib-sources.jar',
+ '../../kotlin-ir/dist//kotlinc/lib/kotlin-jslib.jar',
+ '../../kotlin-ir/dist//kotlinc/lib/kotlin-preloader.jar',
+ '../../kotlin-ir/dist//kotlinc/lib/kotlin-reflect-internal-bootstrap.jar',
+ '../../kotlin-ir/dist//kotlinc/lib/kotlin-reflect.jar',
+ '../../kotlin-ir/dist//kotlinc/lib/kotlin-runner.jar',
+ '../../kotlin-ir/dist//kotlinc/lib/kotlin-runtime-internal-bootstrap.jar',
+ '../../kotlin-ir/dist//kotlinc/lib/kotlin-runtime-sources.jar',
+ '../../kotlin-ir/dist//kotlinc/lib/kotlin-runtime.jar',
+ '../../kotlin-ir/dist//kotlinc/lib/kotlin-test-internal-bootstrap.jar',
+ '../../kotlin-ir/dist//kotlinc/lib/kotlin-test.jar')
+}
+
+sourceSets {
+ main.java.srcDirs += 'src'
+ main.kotlin.srcDirs += 'src'
+}
+
+task jars {
+ project.buildscript.configurations.classpath.each {
+ String jarName = it.getName();
+ print jarName + ":"
+ }
+}
\ No newline at end of file
diff --git a/experiments/backend.native/cli.native/cli.native.iml b/experiments/backend.native/cli.bc/cli.bc.iml
similarity index 100%
rename from experiments/backend.native/cli.native/cli.native.iml
rename to experiments/backend.native/cli.bc/cli.bc.iml
diff --git a/experiments/backend.native/cli.native/src/org/jetbrains/kotlin/cli/bc/K2Native.kt b/experiments/backend.native/cli.bc/src/org/jetbrains/kotlin/cli/bc/K2Native.kt
similarity index 98%
rename from experiments/backend.native/cli.native/src/org/jetbrains/kotlin/cli/bc/K2Native.kt
rename to experiments/backend.native/cli.bc/src/org/jetbrains/kotlin/cli/bc/K2Native.kt
index f0834cd3002..e51afe39df8 100644
--- a/experiments/backend.native/cli.native/src/org/jetbrains/kotlin/cli/bc/K2Native.kt
+++ b/experiments/backend.native/cli.bc/src/org/jetbrains/kotlin/cli/bc/K2Native.kt
@@ -21,10 +21,6 @@ import java.lang.System.out
import java.util.Collections.emptyList
import kotlin.reflect.jvm.internal.impl.load.java.JvmAbi
-/**
- * Created by minamoto on 14/09/16.
- */
-
class K2Native : CLICompiler() {
override fun doExecute(arguments: K2NativeCompilerArguments, configuration: CompilerConfiguration, rootDisposable: Disposable): ExitCode {
configuration.put(CommonConfigurationKeys.MODULE_NAME, JvmAbi.DEFAULT_MODULE_NAME)
diff --git a/experiments/backend.native/cli.native/src/org/jetbrains/kotlin/cli/bc/K2NativeCompilerArguments.java b/experiments/backend.native/cli.bc/src/org/jetbrains/kotlin/cli/bc/K2NativeCompilerArguments.java
similarity index 100%
rename from experiments/backend.native/cli.native/src/org/jetbrains/kotlin/cli/bc/K2NativeCompilerArguments.java
rename to experiments/backend.native/cli.bc/src/org/jetbrains/kotlin/cli/bc/K2NativeCompilerArguments.java
diff --git a/experiments/backend.native/compiler/build.gradle b/experiments/backend.native/compiler/build.gradle
new file mode 100644
index 00000000000..02f67980c44
--- /dev/null
+++ b/experiments/backend.native/compiler/build.gradle
@@ -0,0 +1,11 @@
+buildscript {
+ ext.kotlin_version = '1.0.3'
+ repositories {
+ mavenCentral()
+ }
+ dependencies {
+ classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.0.3"
+ }
+}
+apply plugin: 'java'
+apply plugin: 'kotlin'
\ No newline at end of file
diff --git a/experiments/backend.native/fix_core_imports.patch b/experiments/backend.native/fix_core_imports.patch
new file mode 100644
index 00000000000..771b8cf1950
--- /dev/null
+++ b/experiments/backend.native/fix_core_imports.patch
@@ -0,0 +1,25 @@
+diff --git a/core/builtins/src/kotlin/Progressions.kt b/core/builtins/src/kotlin/Progressions.kt
+index 704d49f..509baaa 100644
+--- a/core/builtins/src/kotlin/Progressions.kt
++++ b/core/builtins/src/kotlin/Progressions.kt
+@@ -18,6 +18,7 @@
+
+ package kotlin.ranges
+
++import java.lang.IllegalArgumentException
+ import kotlin.internal.getProgressionLastElement
+
+ /**
+diff --git a/core/builtins/src/kotlin/internal/progressionUtil.kt b/core/builtins/src/kotlin/internal/progressionUtil.kt
+index 026c99f..f7a222e 100644
+--- a/core/builtins/src/kotlin/internal/progressionUtil.kt
++++ b/core/builtins/src/kotlin/internal/progressionUtil.kt
+@@ -16,6 +16,8 @@
+
+ package kotlin.internal
+
++import java.lang.IllegalArgumentException
++
+ // a mod b (in arithmetical sense)
+ private fun mod(a: Int, b: Int): Int {
+ val mod = a % b
diff --git a/experiments/backend.native/frontend.patch b/experiments/backend.native/frontend.patch
new file mode 100644
index 00000000000..67ecb985ce4
--- /dev/null
+++ b/experiments/backend.native/frontend.patch
@@ -0,0 +1,12 @@
+diff --git a/compiler/frontend/frontend.iml b/compiler/frontend/frontend.iml
+index 15545cc..00b8bed 100644
+--- a/compiler/frontend/frontend.iml
++++ b/compiler/frontend/frontend.iml
+@@ -15,5 +15,6 @@
+
+
+
++
+
+
+\ No newline at end of file
diff --git a/experiments/backend.native/update_dependencies.xml.patch b/experiments/backend.native/update_dependencies.xml.patch
new file mode 100644
index 00000000000..edc9ee99bff
--- /dev/null
+++ b/experiments/backend.native/update_dependencies.xml.patch
@@ -0,0 +1,13 @@
+diff --git a/update_dependencies.xml b/update_dependencies.xml
+index cbfcb42..b5c029f 100644
+--- a/update_dependencies.xml
++++ b/update_dependencies.xml
+@@ -74,7 +74,7 @@
+
+
+
+
+