diff --git a/CHANGES.md b/CHANGES.md
index 1135402..43045c3 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -1,5 +1,12 @@
 # Change log for kotlinx.coroutines
 
+## Version 1.1.1
+
+* Maintenance release, no changes in the codebase
+* Kotlin is updated to 1.3.20
+* Gradle is updated to 4.10
+* Native module is published with Gradle metadata v0.4 
+
 ## Version 1.1.0
 
 * Kotlin version updated to 1.3.11.
diff --git a/README.md b/README.md
index 26ae72d..94417dc 100644
--- a/README.md
+++ b/README.md
@@ -2,10 +2,10 @@
 
 [![official JetBrains project](http://jb.gg/badges/official.svg)](https://confluence.jetbrains.com/display/ALL/JetBrains+on+GitHub)
 [![GitHub license](https://img.shields.io/badge/license-Apache%20License%202.0-blue.svg?style=flat)](http://www.apache.org/licenses/LICENSE-2.0)
-[![Download](https://api.bintray.com/packages/kotlin/kotlinx/kotlinx.coroutines/images/download.svg?version=1.1.0) ](https://bintray.com/kotlin/kotlinx/kotlinx.coroutines/1.1.0)
+[![Download](https://api.bintray.com/packages/kotlin/kotlinx/kotlinx.coroutines/images/download.svg?version=1.1.1) ](https://bintray.com/kotlin/kotlinx/kotlinx.coroutines/1.1.1)
 
 Library support for Kotlin coroutines with [multiplatform](#multiplatform) support.
-This is a companion version for Kotlin `1.3.11` release.
+This is a companion version for Kotlin `1.3.20` release.
 
 **NOTE**: `0.30.2` was the last release with Kotlin 1.2 and experimental coroutines.
 See [COMPATIBILITY.md](COMPATIBILITY.md) for details of migration onto the stable Kotlin 1.3 coroutines.
@@ -74,7 +74,7 @@
 <dependency>
     <groupId>org.jetbrains.kotlinx</groupId>
     <artifactId>kotlinx-coroutines-core</artifactId>
-    <version>1.1.0</version>
+    <version>1.1.1</version>
 </dependency>
 ```
 
@@ -82,7 +82,7 @@
 
 ```xml
 <properties>
-    <kotlin.version>1.3.11</kotlin.version>
+    <kotlin.version>1.3.20</kotlin.version>
 </properties>
 ```
 
@@ -92,7 +92,7 @@
 
 ```groovy
 dependencies {
-    implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.1.0'
+    implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.1.1'
 }
 ```
 
@@ -100,7 +100,7 @@
 
 ```groovy
 buildscript {
-    ext.kotlin_version = '1.3.11'
+    ext.kotlin_version = '1.3.20'
 }
 ```
 
@@ -118,7 +118,7 @@
 
 ```groovy
 dependencies {
-    implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.1.0")
+    implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.1.1")
 }
 ```
 
@@ -126,7 +126,7 @@
 
 ```groovy
 plugins {
-    kotlin("jvm") version "1.3.11"
+    kotlin("jvm") version "1.3.20"
 }
 ```
 
@@ -146,7 +146,7 @@
 module as dependency when using `kotlinx.coroutines` on Android:
 
 ```groovy
-implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.1.0'
+implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.1.1'
 ```
 This gives you access to Android [Dispatchers.Main](https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-android/kotlinx.coroutines.android/kotlinx.coroutines.-dispatchers/index.html)
 coroutine dispatcher and also makes sure that in case of crashed coroutine with unhandled exception this
diff --git a/build.gradle b/build.gradle
index c83fea9..a6e81b7 100644
--- a/build.gradle
+++ b/build.gradle
@@ -12,6 +12,7 @@
     }
     repositories {
         jcenter()
+        maven { url "https://teamcity.jetbrains.com/guestAuth/app/rest/builds/id:1907319/artifacts/content/maven" }
         maven { url "https://kotlin.bintray.com/kotlinx" }
         maven { url "https://kotlin.bintray.com/kotlin-dev" }
         maven { url "https://kotlin.bintray.com/kotlin-eap" }
@@ -63,6 +64,7 @@
             google()
         }
         jcenter()
+        maven { url "https://teamcity.jetbrains.com/guestAuth/app/rest/builds/id:1907319/artifacts/content/maven" }
         maven { url "https://kotlin.bintray.com/kotlin-dev" }
         maven { url "https://kotlin.bintray.com/kotlin-eap" }
         maven { url "https://kotlin.bintray.com/kotlinx" }
diff --git a/core/kotlinx-coroutines-core/test/CancellableContinuationJvmTest.kt b/core/kotlinx-coroutines-core/test/CancellableContinuationJvmTest.kt
index 82d17ed..296dc81 100644
--- a/core/kotlinx-coroutines-core/test/CancellableContinuationJvmTest.kt
+++ b/core/kotlinx-coroutines-core/test/CancellableContinuationJvmTest.kt
@@ -16,7 +16,7 @@
     private suspend fun checkToString() {
         suspendCancellableCoroutine<Unit> {
             it.resume(Unit)
-            assertTrue(it.toString().contains("kotlinx/coroutines/CancellableContinuationJvmTest.checkToString(CancellableContinuationJvmTest.kt"))
+            assertTrue(it.toString().contains("kotlinx.coroutines.CancellableContinuationJvmTest.checkToString(CancellableContinuationJvmTest.kt"))
         }
     }
 }
diff --git a/core/kotlinx-coroutines-debug/README.md b/core/kotlinx-coroutines-debug/README.md
index fce32bb..b9cc094 100644
--- a/core/kotlinx-coroutines-debug/README.md
+++ b/core/kotlinx-coroutines-debug/README.md
@@ -18,99 +18,83 @@
 Add `kotlinx-coroutines-debug` to your project test dependencies:
 ```
 dependencies {
-    testImplementation 'org.jetbrains.kotlinx:kotlinx-coroutines-debug:1.1.0'
+    testImplementation 'org.jetbrains.kotlinx:kotlinx-coroutines-debug:1.1.1'
 }
 ```
 
 ### Using as JVM agent
 
 It is possible to use this module as a standalone JVM agent to enable debug probes on the application startup.
-You can run your application with an additional argument: `-javaagent:kotlinx-coroutines-debug-1.1.0.jar`.
+You can run your application with an additional argument: `-javaagent:kotlinx-coroutines-debug-1.1.1.jar`.
 Additionally, on Linux and Mac OS X you can use `kill -5 $pid` command in order to force your application to print all alive coroutines.
 
 
 ### Example of usage
 
-Capabilities of this module can be demonstrated by the following example:
+Capabilities of this module can be demonstrated by the following example 
+(runnable code is [here](test/Example.kt)):
+
 ```kotlin
-class Computation {
-    public fun computeValue(): Deferred<String> = GlobalScope.async {
-        val firstPart = computeFirstPart()
-        val secondPart = computeSecondPart()
-
-        combineResults(firstPart, secondPart)
-    }
-
-    private suspend fun combineResults(firstPart: Deferred<String>, secondPart: Deferred<String>): String {
-        return firstPart.await() + secondPart.await()
-    }
-
-
-    private suspend fun CoroutineScope.computeFirstPart() = async {
-        delay(5000)
-        "4"
-    }
-
-    private suspend fun CoroutineScope.computeSecondPart() = async {
-        delay(5000)
-        "2"
-    }
+suspend fun computeValue(): String = coroutineScope {
+    val one = async { computeOne() }
+    val two = async { computeTwo() }
+    combineResults(one, two)
 }
 
-fun main(args: Array<String>) = runBlocking {
-    DebugProbes.install()
-    val computation = Computation()
-    val deferred = computation.computeValue()
+suspend fun combineResults(one: Deferred<String>, two: Deferred<String>): String =
+    one.await() + two.await()
 
+suspend fun computeOne(): String {
+    delay(5000)
+    return "4"
+}
+
+suspend fun computeTwo(): String {
+    delay(5000)
+    return "2"
+}
+
+fun main() = runBlocking {
+    DebugProbes.install()
+    val deferred = async { computeValue() }
     // Delay for some time
     delay(1000)
-
+    // Dump running coroutines
     DebugProbes.dumpCoroutines()
-
     println("\nDumping only deferred")
     DebugProbes.printJob(deferred)
 }
 ```
 
 Printed result will be:
+
 ```
 Coroutines dump 2018/11/12 21:44:02
 
-Coroutine "coroutine#2":DeferredCoroutine{Active}@1b26f7b2, state: SUSPENDED
+Coroutine "coroutine#2":DeferredCoroutine{Active}@289d1c02, state: SUSPENDED
 	at kotlinx.coroutines.DeferredCoroutine.await$suspendImpl(Builders.common.kt:99)
-	at Computation.combineResults(Example.kt:18)
-	at Computation$computeValue$1.invokeSuspend(Example.kt:14)
+	at ExampleKt.combineResults(Example.kt:11)
+	at ExampleKt$computeValue$2.invokeSuspend(Example.kt:7)
+	at ExampleKt$main$1$deferred$1.invokeSuspend(Example.kt:25)
 	(Coroutine creation stacktrace)
 	at kotlin.coroutines.intrinsics.IntrinsicsKt__IntrinsicsJvmKt.createCoroutineUnintercepted(IntrinsicsJvm.kt:116)
-	at kotlinx.coroutines.intrinsics.CancellableKt.startCoroutineCancellable(Cancellable.kt:23)
-	at kotlinx.coroutines.CoroutineStart.invoke(CoroutineStart.kt:109)
-	at kotlinx.coroutines.AbstractCoroutine.start(AbstractCoroutine.kt:160)
-	at kotlinx.coroutines.BuildersKt__Builders_commonKt.async(Builders.common.kt:88)
-	at kotlinx.coroutines.BuildersKt.async(Unknown Source)
-	at kotlinx.coroutines.BuildersKt__Builders_commonKt.async$default(Builders.common.kt:81)
+	at kotlinx.coroutines.intrinsics.CancellableKt.startCoroutineCancellable(Cancellable.kt:25)
 	at kotlinx.coroutines.BuildersKt.async$default(Unknown Source)
-	at Computation.computeValue(Example.kt:10)
-	at ExampleKt$main$1.invokeSuspend(Example.kt:36)
+	at ExampleKt$main$1.invokeSuspend(Example.kt:25)
 	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:32)
-	at kotlinx.coroutines.DispatchedTask$DefaultImpls.run(Dispatched.kt:237)
-	at kotlinx.coroutines.DispatchedContinuation.run(Dispatched.kt:81)
-	at kotlinx.coroutines.EventLoopBase.processNextEvent(EventLoop.kt:123)
-	at kotlinx.coroutines.BlockingCoroutine.joinBlocking(Builders.kt:69)
-	at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking(Builders.kt:45)
-	at kotlinx.coroutines.BuildersKt.runBlocking(Unknown Source)
-	at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking$default(Builders.kt:35)
+	at kotlinx.coroutines.DispatchedTask.run(Dispatched.kt:233)
 	at kotlinx.coroutines.BuildersKt.runBlocking$default(Unknown Source)
-	at ExampleKt.main(Example.kt:33)
+	at ExampleKt.main(Example.kt:23)
+	at ExampleKt.main(Example.kt)
 
 ... More coroutines here ...
 
 Dumping only deferred
 "coroutine#2":DeferredCoroutine{Active}, continuation is SUSPENDED at line kotlinx.coroutines.DeferredCoroutine.await$suspendImpl(Builders.common.kt:99)
-	"coroutine#3":DeferredCoroutine{Active}, continuation is SUSPENDED at line Computation$computeFirstPart$2.invokeSuspend(Example.kt:23)
-	"coroutine#4":DeferredCoroutine{Active}, continuation is SUSPENDED at line Computation$computeSecondPart$2.invokeSuspend(Example.kt:28)
+			"coroutine#3":DeferredCoroutine{Active}, continuation is SUSPENDED at line ExampleKt.computeOne(Example.kt:14)
+		"coroutine#4":DeferredCoroutine{Active}, continuation is SUSPENDED at line ExampleKt.computeTwo(Example.kt:19)
 ```
 
-
 ### Status of the API
 
 API is purely experimental and it is not guaranteed that it won't be changed (while it is marked as `@ExperimentalCoroutinesApi`).
diff --git a/core/kotlinx-coroutines-debug/test/Example.kt b/core/kotlinx-coroutines-debug/test/Example.kt
new file mode 100644
index 0000000..8a0944c
--- /dev/null
+++ b/core/kotlinx-coroutines-debug/test/Example.kt
@@ -0,0 +1,32 @@
+import kotlinx.coroutines.*
+import kotlinx.coroutines.debug.*
+
+suspend fun computeValue(): String = coroutineScope {
+    val one = async { computeOne() }
+    val two = async { computeTwo() }
+    combineResults(one, two)
+}
+
+suspend fun combineResults(one: Deferred<String>, two: Deferred<String>): String =
+    one.await() + two.await()
+
+suspend fun computeOne(): String {
+    delay(5000)
+    return "4"
+}
+
+suspend fun computeTwo(): String {
+    delay(5000)
+    return "2"
+}
+
+fun main() = runBlocking {
+    DebugProbes.install()
+    val deferred = async { computeValue() }
+    // Delay for some time
+    delay(1000)
+    // Dump running coroutines
+    DebugProbes.dumpCoroutines()
+    println("\nDumping only deferred")
+    DebugProbes.printJob(deferred)
+}
\ No newline at end of file
diff --git a/core/kotlinx-coroutines-test/README.md b/core/kotlinx-coroutines-test/README.md
index 08fbdc1..a461bf4 100644
--- a/core/kotlinx-coroutines-test/README.md
+++ b/core/kotlinx-coroutines-test/README.md
@@ -7,7 +7,7 @@
 Add `kotlinx-coroutines-test` to your project test dependencies:
 ```
 dependencies {
-    testImplementation 'org.jetbrains.kotlinx:kotlinx-coroutines-test:1.1.0'
+    testImplementation 'org.jetbrains.kotlinx:kotlinx-coroutines-test:1.1.1'
 }
 ```
 
diff --git a/gradle.properties b/gradle.properties
index 1072552..de04562 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -1,16 +1,16 @@
 # Kotlin
-version=1.1.0-SNAPSHOT
+version=1.1.1-SNAPSHOT
 group=org.jetbrains.kotlinx
-kotlin_version=1.3.11
-kotlin_native_version=1.3.11
+kotlin_version=1.3.20
+kotlin_native_version=1.3.20
 
 # Dependencies
 junit_version=4.12
-atomicFU_version=0.12.0
+atomicFU_version=0.12.1
 html_version=0.6.8
 lincheck_version=2.0
 dokka_version=0.9.16-rdev-2-mpp-hacks
-bintray_version=1.8.2-SNAPSHOT
+bintray_version=1.8.4-jetbrains-5
 byte_buddy_version=1.9.3
 artifactory_plugin_version=4.7.3
 
diff --git a/gradle/publish-bintray.gradle b/gradle/publish-bintray.gradle
index 23c38bd..64e62e5 100644
--- a/gradle/publish-bintray.gradle
+++ b/gradle/publish-bintray.gradle
@@ -117,10 +117,7 @@
 if (!isNative()) {
     afterEvaluate {
         publishing.publications.each { pub ->
-            pub.gradleModuleMetadataFile = null
-            tasks.matching { it.name == "generateMetadataFileFor${pub.name.capitalize()}Publication" }.all {
-                onlyIf { false }
-            }
+            pub.moduleDescriptorGenerator = null
         }
     }
 }
\ No newline at end of file
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
index 91ca28c..28861d2 100644
--- a/gradle/wrapper/gradle-wrapper.jar
+++ b/gradle/wrapper/gradle-wrapper.jar
Binary files differ
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 16d2805..115e6ac 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,5 +1,5 @@
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-4.7-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-4.10-bin.zip
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
diff --git a/integration/kotlinx-coroutines-jdk8/src/future/Future.kt b/integration/kotlinx-coroutines-jdk8/src/future/Future.kt
index fe02974..6c59a08 100644
--- a/integration/kotlinx-coroutines-jdk8/src/future/Future.kt
+++ b/integration/kotlinx-coroutines-jdk8/src/future/Future.kt
@@ -95,7 +95,7 @@
         } catch (e: Throwable) {
             // unwrap original cause from ExecutionException
             val original = (e as? ExecutionException)?.cause ?: e
-            CompletableDeferred<T>().also { it.cancel(original) }
+            CompletableDeferred<T>().also { it.completeExceptionally(original) }
         }
     }
     val result = CompletableDeferred<T>()
@@ -103,7 +103,7 @@
         if (exception == null) {
             result.complete(value)
         } else {
-            result.cancel(exception)
+            result.completeExceptionally(exception)
         }
     }
     if (this is Future<*>) result.cancelFutureOnCompletion(this)
diff --git a/native/README.md b/native/README.md
index 897a07e..031b433 100644
--- a/native/README.md
+++ b/native/README.md
@@ -42,7 +42,7 @@
 }
 
 dependencies {
-    implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core-native:1.1.0'
+    implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core-native:1.1.1'
 }
 
 sourceSets {
diff --git a/native/kotlinx-coroutines-core-native/src/internal/Concurrent.kt b/native/kotlinx-coroutines-core-native/src/internal/Concurrent.kt
index 9e6fd65..546d6af 100644
--- a/native/kotlinx-coroutines-core-native/src/internal/Concurrent.kt
+++ b/native/kotlinx-coroutines-core-native/src/internal/Concurrent.kt
@@ -18,4 +18,4 @@
 internal actual fun <E> identitySet(expectedSize: Int): MutableSet<E> = HashSet()
 
 @Suppress("ACTUAL_WITHOUT_EXPECT")
-internal actual typealias SharedImmutable = kotlin.native.SharedImmutable
+internal actual typealias SharedImmutable = kotlin.native.concurrent.SharedImmutable
diff --git a/native/kotlinx-coroutines-core-native/src/internal/ThreadLocal.kt b/native/kotlinx-coroutines-core-native/src/internal/ThreadLocal.kt
index 420e0d2..7214bba 100644
--- a/native/kotlinx-coroutines-core-native/src/internal/ThreadLocal.kt
+++ b/native/kotlinx-coroutines-core-native/src/internal/ThreadLocal.kt
@@ -6,7 +6,7 @@
 import kotlin.native.concurrent.*
 
 @Suppress("ACTUAL_WITHOUT_EXPECT")
-internal actual typealias NativeThreadLocal = kotlin.native.ThreadLocal
+internal actual typealias NativeThreadLocal = kotlin.native.concurrent.ThreadLocal
 
 internal actual class CommonThreadLocal<T> actual constructor() {
     private var value: T? = null
diff --git a/ui/coroutines-guide-ui.md b/ui/coroutines-guide-ui.md
index 0f5f5fa..223af58 100644
--- a/ui/coroutines-guide-ui.md
+++ b/ui/coroutines-guide-ui.md
@@ -165,7 +165,7 @@
 `app/build.gradle` file:
 
 ```groovy
-implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.1.0"
+implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.1.1"
 ```
 
 You can clone [kotlinx.coroutines](https://github.com/Kotlin/kotlinx.coroutines) project from GitHub onto your 
@@ -659,7 +659,7 @@
 for execution later. All UI dispatchers in `kotlinx.coroutines` are implemented this way. Why so? 
 
 Basically, the choice here is between "JS-style" asynchronous approach (async actions
-are always postponed to be executed later in the even dispatch thread) and "C#-style" approach
+are always postponed to be executed later in the event dispatch thread) and "C#-style" approach
 (async actions are executed in the invoker thread until the first suspension point).
 While, C# approach seems to be more efficient, it ends up with recommendations like
 "use `yield` if you need to ....". This is error-prone. JS-style approach is more consistent
diff --git a/ui/kotlinx-coroutines-android/animation-app/gradle.properties b/ui/kotlinx-coroutines-android/animation-app/gradle.properties
index fad72f9..c2dde35 100644
--- a/ui/kotlinx-coroutines-android/animation-app/gradle.properties
+++ b/ui/kotlinx-coroutines-android/animation-app/gradle.properties
@@ -18,6 +18,6 @@
 
 kotlin.coroutines=enable
 
-kotlin_version=1.3.11
-coroutines_version=1.1.0
+kotlin_version=1.3.20
+coroutines_version=1.1.1
 
diff --git a/ui/kotlinx-coroutines-android/example-app/gradle.properties b/ui/kotlinx-coroutines-android/example-app/gradle.properties
index fad72f9..c2dde35 100644
--- a/ui/kotlinx-coroutines-android/example-app/gradle.properties
+++ b/ui/kotlinx-coroutines-android/example-app/gradle.properties
@@ -18,6 +18,6 @@
 
 kotlin.coroutines=enable
 
-kotlin_version=1.3.11
-coroutines_version=1.1.0
+kotlin_version=1.3.20
+coroutines_version=1.1.1
 
