diff --git a/CHANGES.md b/CHANGES.md
index b78a8f8..b5be24e 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -1,5 +1,24 @@
 # Change log for kotlinx.coroutines 
 
+## Version 0.18
+
+* Kotlin 1.1.4 is required to use this version, which enables:
+  * `withLock` and `consumeEach` functions are now inline suspend functions.
+  * `JobSupport` class implementation is optimized (one fewer field).
+* `TimeoutException` is public (see #89).
+* Improvements to `Mutex` (courtesy of @fvasco):
+  * Introduced `holdsLock` (see #92).
+  * Improved documentation on `Mutex` fairness (see #90).
+* Fixed NPE when `ArrayBroadcastChannel` is closed concurrently with receive (see #97).
+* Fixed bug in internal class LockFreeLinkedList that resulted in ISE under stress in extremely rare circumstances.
+* Integrations:
+  * [quasar](integration/kotlinx-coroutines-quasar): Introduced integration with suspendable JVM functions
+    that are instrumented with [Parallel Universe Quasar](http://docs.paralleluniverse.co/quasar/) 
+    (thanks to the help of @pron). 
+  * [reactor](reactive/kotlinx-coroutines-reactor): Replaced deprecated `setCancellation` with `onDipose` and 
+    updated to Aluminium-SR3 release (courtesy of @yxf07, see #96) 
+  * [jdk8](integration/kotlinx-coroutines-jdk8): Added adapters for `java.time` classes (courtesy of @fvasco, see #93)     
+
 ## Version 0.17
 
 * `CompletableDeferred` is introduced as a set-once event-like communication primitive (see #70).
diff --git a/README.md b/README.md
index 9851f8a..ce27722 100644
--- a/README.md
+++ b/README.md
@@ -1,10 +1,11 @@
 # kotlinx.coroutines [ ![Download](https://api.bintray.com/packages/kotlin/kotlinx/kotlinx.coroutines/images/download.svg) ](https://bintray.com/kotlin/kotlinx/kotlinx.coroutines/_latestVersion)
 
-Library support for Kotlin coroutines. This is a companion version for Kotlin 1.1 release. 
+Library support for Kotlin coroutines. 
+This is a companion version for Kotlin 1.1.4 release (this is the minimal required Kotlin runtime version). 
 
 ## Modules
 
-* [kotlinx-coroutines-core](kotlinx-coroutines-core/README.md) -- core primitives to work with coroutines:
+* [core](core/README.md) -- core primitives to work with coroutines:
   * `launch`, `async`, `produce`, `actor`, etc coroutine builders;
   * `Job` and `Deferred` light-weight future with cancellation support;
   * `CommonPool` and other coroutine contexts;
@@ -20,9 +21,12 @@
 
 ## Documentation
 
-* [Guide to kotlinx.coroutines by example](coroutines-guide.md) (**read it first**)
-* [Guide to UI programming with coroutines](ui/coroutines-guide-ui.md)
-* [Guide to reactive streams with coroutines](reactive/coroutines-guide-reactive.md)
+* [Introduction to Kotlin Coroutines](https://vimeo.com/222499934) video
+  (Roman Elizarov at GeekOut 2017, [slides](https://www.slideshare.net/elizarov/introduction-to-kotlin-coroutines))
+* Guides and manuals: 
+  * [Guide to kotlinx.coroutines by example](coroutines-guide.md) (**read it first**)
+  * [Guide to UI programming with coroutines](ui/coroutines-guide-ui.md)
+  * [Guide to reactive streams with coroutines](reactive/coroutines-guide-reactive.md)
 * [Change log for kotlinx.coroutines](CHANGES.md)
 * [Coroutines design document (KEEP)](https://github.com/Kotlin/kotlin-coroutines/blob/master/kotlin-coroutines-informal.md)
 * [Full kotlinx.coroutines API reference](http://kotlin.github.io/kotlinx.coroutines)
@@ -34,7 +38,7 @@
 The libraries are published to [kotlinx](https://bintray.com/kotlin/kotlinx/kotlinx.coroutines) bintray repository
 and also linked to [JCenter](https://bintray.com/bintray/jcenter?filterByPkgName=kotlinx.coroutines).
 
-These libraries require kotlin compiler version `1.1.x` and 
+These libraries require kotlin compiler version `1.1.4` or later and 
 require kotlin runtime of the same version as a dependency.
 
 ### Maven
@@ -54,7 +58,7 @@
 <dependency>
     <groupId>org.jetbrains.kotlinx</groupId>
     <artifactId>kotlinx-coroutines-core</artifactId>
-    <version>0.17</version>
+    <version>0.18</version>
 </dependency>
 ```
 
@@ -62,7 +66,7 @@
 
 ```xml
 <properties>
-    <kotlin.version>1.1.3-2</kotlin.version>
+    <kotlin.version>1.1.4</kotlin.version>
 </properties>
 ```
 
@@ -79,13 +83,13 @@
 Add dependencies (you can also add other modules that you need):
 
 ```groovy
-compile 'org.jetbrains.kotlinx:kotlinx-coroutines-core:0.17'
+compile 'org.jetbrains.kotlinx:kotlinx-coroutines-core:0.18'
 ```
 
 And make sure that you use the right Kotlin version:
 
 ```groovy
 buildscript {
-    ext.kotlin_version = '1.1.3-2'
+    ext.kotlin_version = '1.1.4'
 }
 ```
diff --git a/benchmarks/pom.xml b/benchmarks/pom.xml
index 70aba09..fde11e7 100644
--- a/benchmarks/pom.xml
+++ b/benchmarks/pom.xml
@@ -24,7 +24,7 @@
     <parent>
         <groupId>org.jetbrains.kotlinx</groupId>
         <artifactId>kotlinx-coroutines</artifactId>
-        <version>0.17-SNAPSHOT</version>
+        <version>0.18-SNAPSHOT</version>
     </parent>
 
     <artifactId>benchmarks</artifactId>
diff --git a/core/README.md b/core/README.md
new file mode 100644
index 0000000..002d884
--- /dev/null
+++ b/core/README.md
@@ -0,0 +1,8 @@
+# Coroutines core 
+
+This directory contains modules that provide core coroutine support.
+
+## Modules
+
+* [kotlinx-coroutines-core](kotlinx-coroutines-core/README.md) -- core coroutine builders and synchronization primitives. 
+
diff --git a/kotlinx-coroutines-core/README.md b/core/kotlinx-coroutines-core/README.md
similarity index 98%
rename from kotlinx-coroutines-core/README.md
rename to core/kotlinx-coroutines-core/README.md
index a75efa7..89626bb 100644
--- a/kotlinx-coroutines-core/README.md
+++ b/core/kotlinx-coroutines-core/README.md
@@ -85,7 +85,7 @@
 <!--- MODULE kotlinx-coroutines-core -->
 <!--- INDEX kotlinx.coroutines.experimental -->
 [launch]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental/launch.html
-[Job]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental/-job.html
+[Job]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental/-job/index.html
 [CoroutineScope]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental/-coroutine-scope/index.html
 [async]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental/async.html
 [Deferred]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental/-deferred/index.html
@@ -97,7 +97,7 @@
 [java.util.concurrent.Executor.asCoroutineDispatcher]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental/java.util.concurrent.-executor/as-coroutine-dispatcher.html
 [Unconfined]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental/-unconfined/index.html
 [NonCancellable]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental/-non-cancellable/index.html
-[CoroutineExceptionHandler]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental/-coroutine-exception-handler.html
+[CoroutineExceptionHandler]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental/-coroutine-exception-handler/index.html
 [delay]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental/delay.html
 [yield]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental/yield.html
 [run]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental/run.html
@@ -109,7 +109,7 @@
 [suspendCancellableCoroutine]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental/suspend-cancellable-coroutine.html
 [newCoroutineContext]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental/new-coroutine-context.html
 <!--- INDEX kotlinx.coroutines.experimental.sync -->
-[kotlinx.coroutines.experimental.sync.Mutex]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental.sync/-mutex.html
+[kotlinx.coroutines.experimental.sync.Mutex]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental.sync/-mutex/index.html
 [kotlinx.coroutines.experimental.sync.Mutex.lock]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental.sync/-mutex/lock.html
 [kotlinx.coroutines.experimental.sync.Mutex.tryLock]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental.sync/-mutex/try-lock.html
 <!--- INDEX kotlinx.coroutines.experimental.channels -->
@@ -119,7 +119,7 @@
 [kotlinx.coroutines.experimental.channels.actor]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental.channels/actor.html
 [kotlinx.coroutines.experimental.channels.ActorJob]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental.channels/-actor-job/index.html
 [kotlinx.coroutines.experimental.channels.ActorScope]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental.channels/-actor-scope/index.html
-[kotlinx.coroutines.experimental.channels.Channel]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental.channels/-channel.html
+[kotlinx.coroutines.experimental.channels.Channel]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental.channels/-channel/index.html
 [kotlinx.coroutines.experimental.channels.SendChannel.send]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental.channels/-send-channel/send.html
 [kotlinx.coroutines.experimental.channels.ReceiveChannel.receive]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental.channels/-receive-channel/receive.html
 [kotlinx.coroutines.experimental.channels.SendChannel]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental.channels/-send-channel/index.html
diff --git a/kotlinx-coroutines-core/pom.xml b/core/kotlinx-coroutines-core/pom.xml
similarity index 97%
rename from kotlinx-coroutines-core/pom.xml
rename to core/kotlinx-coroutines-core/pom.xml
index b78e741..4b15dce 100644
--- a/kotlinx-coroutines-core/pom.xml
+++ b/core/kotlinx-coroutines-core/pom.xml
@@ -22,7 +22,8 @@
     <parent>
         <groupId>org.jetbrains.kotlinx</groupId>
         <artifactId>kotlinx-coroutines</artifactId>
-        <version>0.17-SNAPSHOT</version>
+        <version>0.18-SNAPSHOT</version>
+        <relativePath>../../pom.xml</relativePath>
     </parent>
 
     <artifactId>kotlinx-coroutines-core</artifactId>
diff --git a/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/AbstractContinuation.kt b/core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/AbstractContinuation.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/AbstractContinuation.kt
rename to core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/AbstractContinuation.kt
diff --git a/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/AbstractCoroutine.kt b/core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/AbstractCoroutine.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/AbstractCoroutine.kt
rename to core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/AbstractCoroutine.kt
diff --git a/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/Builders.kt b/core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/Builders.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/Builders.kt
rename to core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/Builders.kt
diff --git a/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/Cancellable.kt b/core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/Cancellable.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/Cancellable.kt
rename to core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/Cancellable.kt
diff --git a/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/CancellableContinuation.kt b/core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/CancellableContinuation.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/CancellableContinuation.kt
rename to core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/CancellableContinuation.kt
diff --git a/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/CommonPool.kt b/core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/CommonPool.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/CommonPool.kt
rename to core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/CommonPool.kt
diff --git a/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/CompletableDeferred.kt b/core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/CompletableDeferred.kt
similarity index 95%
rename from kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/CompletableDeferred.kt
rename to core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/CompletableDeferred.kt
index f58b7ac..106fe97 100644
--- a/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/CompletableDeferred.kt
+++ b/core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/CompletableDeferred.kt
@@ -16,7 +16,7 @@
 
 package kotlinx.coroutines.experimental
 
-import kotlinx.coroutines.experimental.selects.SelectInstance
+import kotlinx.coroutines.experimental.selects.SelectClause1
 
 /**
  * A [Deferred] that can be completed via public functions
@@ -86,8 +86,8 @@
 private class CompletableDeferredImpl<T> : JobSupport(true), CompletableDeferred<T> {
     override fun getCompleted(): T = getCompletedInternal() as T
     suspend override fun await(): T = awaitInternal() as T
-    override fun <R> registerSelectAwait(select: SelectInstance<R>, block: suspend (T) -> R) =
-        registerSelectAwaitInternal(select, block as (suspend (Any?) -> R))
+    override val onAwait: SelectClause1<T>
+        get() = this as SelectClause1<T>
 
     override fun complete(value: T): Boolean {
         loopOnState { state ->
diff --git a/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/CoroutineContext.kt b/core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/CoroutineContext.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/CoroutineContext.kt
rename to core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/CoroutineContext.kt
diff --git a/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/CoroutineDispatcher.kt b/core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/CoroutineDispatcher.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/CoroutineDispatcher.kt
rename to core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/CoroutineDispatcher.kt
diff --git a/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/CoroutineExceptionHandler.kt b/core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/CoroutineExceptionHandler.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/CoroutineExceptionHandler.kt
rename to core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/CoroutineExceptionHandler.kt
diff --git a/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/CoroutineName.kt b/core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/CoroutineName.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/CoroutineName.kt
rename to core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/CoroutineName.kt
diff --git a/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/CoroutineScope.kt b/core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/CoroutineScope.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/CoroutineScope.kt
rename to core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/CoroutineScope.kt
diff --git a/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/CoroutineStart.kt b/core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/CoroutineStart.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/CoroutineStart.kt
rename to core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/CoroutineStart.kt
diff --git a/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/DefaultExecutor.kt b/core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/DefaultExecutor.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/DefaultExecutor.kt
rename to core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/DefaultExecutor.kt
diff --git a/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/Deferred.kt b/core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/Deferred.kt
similarity index 93%
rename from kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/Deferred.kt
rename to core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/Deferred.kt
index b1dfa39..8d5f520 100644
--- a/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/Deferred.kt
+++ b/core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/Deferred.kt
@@ -16,8 +16,7 @@
 
 package kotlinx.coroutines.experimental
 
-import kotlinx.coroutines.experimental.selects.SelectBuilder
-import kotlinx.coroutines.experimental.selects.SelectInstance
+import kotlinx.coroutines.experimental.selects.SelectClause1
 import kotlinx.coroutines.experimental.selects.select
 import kotlin.coroutines.experimental.CoroutineContext
 
@@ -91,16 +90,17 @@
      * If the [Job] of the current coroutine is cancelled or completed while this suspending function is waiting, this function
      * immediately resumes with [CancellationException].
      *
-     * This function can be used in [select] invocation with [onAwait][SelectBuilder.onAwait] clause.
+     * This function can be used in [select] invocation with [onAwait] clause.
      * Use [isCompleted] to check for completion of this deferred value without waiting.
      */
     public suspend fun await(): T
 
     /**
-     * Registers [onAwait][SelectBuilder.onAwait] select clause.
-     * @suppress **This is unstable API and it is subject to change.**
+     * Clause for [select] expression of [await] suspending function that selects with the deferred value when it is
+     * resolved. The [select] invocation fails if the deferred value completes exceptionally (either fails or
+     * it cancelled).
      */
-    public fun <R> registerSelectAwait(select: SelectInstance<R>, block: suspend (T) -> R)
+    public val onAwait: SelectClause1<T>
 
     /**
      * Returns *completed* result or throws [IllegalStateException] if this deferred value has not
@@ -175,8 +175,8 @@
 ) : AbstractCoroutine<T>(parentContext, active), Deferred<T> {
     override fun getCompleted(): T = getCompletedInternal() as T
     suspend override fun await(): T = awaitInternal() as T
-    override fun <R> registerSelectAwait(select: SelectInstance<R>, block: suspend (T) -> R) =
-        registerSelectAwaitInternal(select, block as (suspend (Any?) -> R))
+    override val onAwait: SelectClause1<T>
+        get() = this as SelectClause1<T>
 }
 
 private class LazyDeferredCoroutine<T>(
diff --git a/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/Delay.kt b/core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/Delay.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/Delay.kt
rename to core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/Delay.kt
diff --git a/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/EventLoop.kt b/core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/EventLoop.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/EventLoop.kt
rename to core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/EventLoop.kt
diff --git a/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/Executors.kt b/core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/Executors.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/Executors.kt
rename to core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/Executors.kt
diff --git a/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/Job.kt b/core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/Job.kt
similarity index 97%
rename from kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/Job.kt
rename to core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/Job.kt
index 821564b..922d414 100644
--- a/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/Job.kt
+++ b/core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/Job.kt
@@ -22,11 +22,11 @@
 import kotlinx.coroutines.experimental.internal.LockFreeLinkedListNode
 import kotlinx.coroutines.experimental.internal.OpDescriptor
 import kotlinx.coroutines.experimental.intrinsics.startCoroutineUndispatched
-import kotlinx.coroutines.experimental.selects.SelectBuilder
+import kotlinx.coroutines.experimental.selects.SelectClause0
+import kotlinx.coroutines.experimental.selects.SelectClause1
 import kotlinx.coroutines.experimental.selects.SelectInstance
 import kotlinx.coroutines.experimental.selects.select
 import java.util.concurrent.Future
-import kotlin.coroutines.experimental.AbstractCoroutineContextElement
 import kotlin.coroutines.experimental.Continuation
 import kotlin.coroutines.experimental.CoroutineContext
 
@@ -169,11 +169,17 @@
      * This suspending function is cancellable. If the [Job] of the invoking coroutine is cancelled or completed while this
      * suspending function is suspended, this function immediately resumes with [CancellationException].
      *
-     * This function can be used in [select] invocation with [onJoin][SelectBuilder.onJoin] clause.
+     * This function can be used in [select] invocation with [onJoin] clause.
      * Use [isCompleted] to check for completion of this job without waiting.
      */
     public suspend fun join()
 
+    /**
+     * Clause for [select] expression of [join] suspending function that selects when the job is complete.
+     * This clause never fails, even if the job completes exceptionally.
+     */
+    public val onJoin: SelectClause0
+
     // ------------ low-level state-notification ------------
 
     /**
@@ -227,12 +233,6 @@
     // ------------ unstable internal API ------------
 
     /**
-     * Registers [onJoin][SelectBuilder.onJoin] select clause.
-     * @suppress **This is unstable API and it is subject to change.**
-     */
-    public fun <R> registerSelectJoin(select: SelectInstance<R>, block: suspend () -> R)
-
-    /**
      * @suppress **Error**: Operator '+' on two Job objects is meaningless.
      * Job is a coroutine context element and `+` is a set-sum operator for coroutine contexts.
      * The job to the right of `+` just replaces the job the left of `+`.
@@ -376,7 +376,9 @@
  * @param active when `true` the job is created in _active_ state, when `false` in _new_ state. See [Job] for details.
  * @suppress **This is unstable API and it is subject to change.**
  */
-public open class JobSupport(active: Boolean) : AbstractCoroutineContextElement(Job), Job {
+public open class JobSupport(active: Boolean) : Job, SelectClause0, SelectClause1<Any?> {
+    override val key: CoroutineContext.Key<*> get() = Job
+
     /*
        === Internal states ===
 
@@ -727,7 +729,11 @@
         cont.disposeOnCompletion(invokeOnCompletion(ResumeOnCompletion(this, cont)))
     }
 
-    override fun <R> registerSelectJoin(select: SelectInstance<R>, block: suspend () -> R) {
+    final override val onJoin: SelectClause0
+        get() = this
+
+    // registerSelectJoin
+    final override fun <R> registerSelectClause0(select: SelectInstance<R>, block: suspend () -> R) {
         // fast-path -- check state and select/return if needed
         loopOnState { state ->
             if (select.isSelected) return
@@ -955,7 +961,8 @@
         })
     }
 
-    protected fun <R> registerSelectAwaitInternal(select: SelectInstance<R>, block: suspend (Any?) -> R) {
+    // registerSelectAwaitInternal
+    override fun <R> registerSelectClause1(select: SelectInstance<R>, block: suspend (Any?) -> R) {
         // fast-path -- check state and select/return if needed
         loopOnState { state ->
             if (select.isSelected) return
diff --git a/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/LazyDeferred.kt b/core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/LazyDeferred.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/LazyDeferred.kt
rename to core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/LazyDeferred.kt
diff --git a/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/NonCancellable.kt b/core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/NonCancellable.kt
similarity index 85%
rename from kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/NonCancellable.kt
rename to core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/NonCancellable.kt
index c739720..0c76c96 100644
--- a/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/NonCancellable.kt
+++ b/core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/NonCancellable.kt
@@ -17,7 +17,7 @@
 package kotlinx.coroutines.experimental
 
 import kotlinx.coroutines.experimental.NonCancellable.isActive
-import kotlinx.coroutines.experimental.selects.SelectInstance
+import kotlinx.coroutines.experimental.selects.SelectClause0
 import kotlin.coroutines.experimental.AbstractCoroutineContextElement
 
 /**
@@ -49,13 +49,8 @@
         throw UnsupportedOperationException("This job is always active")
     }
 
-    /**
-     * Always throws [UnsupportedOperationException].
-     * @suppress **This is unstable API and it is subject to change.**
-     */
-    override fun <R> registerSelectJoin(select: SelectInstance<R>, block: suspend () -> R)  {
-        throw UnsupportedOperationException("This job is always active")
-    }
+    override val onJoin: SelectClause0
+        get() = throw UnsupportedOperationException("This job is always active")
 
     /** Always throws [IllegalStateException]. */
     override fun getCompletionException(): CancellationException = throw IllegalStateException("This job is always active")
diff --git a/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/ResumeMode.kt b/core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/ResumeMode.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/ResumeMode.kt
rename to core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/ResumeMode.kt
diff --git a/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/Scheduled.kt b/core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/Scheduled.kt
similarity index 86%
rename from kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/Scheduled.kt
rename to core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/Scheduled.kt
index 85ab37c..0de3192 100644
--- a/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/Scheduled.kt
+++ b/core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/Scheduled.kt
@@ -26,12 +26,12 @@
 
 /**
  * Runs a given suspending [block] of code inside a coroutine with a specified timeout and throws
- * [CancellationException] if timeout was exceeded.
+ * [TimeoutException] if timeout was exceeded.
  *
  * The code that is executing inside the [block] is cancelled on timeout and the active or next invocation of
- * cancellable suspending function inside the block throws [CancellationException], so normally that exception,
+ * cancellable suspending function inside the block throws [TimeoutException], so normally that exception,
  * if uncaught, also gets thrown by `withTimeout` as a result.
- * However, the code in the block can suppress [CancellationException].
+ * However, the code in the block can suppress [TimeoutException].
  *
  * The sibling function that does not throw exception on timeout is [withTimeoutOrNull].
  * Note, that timeout action can be specified for [select] invocation with [onTimeout][SelectBuilder.onTimeout] clause.
@@ -74,9 +74,9 @@
  * `null` if this timeout was exceeded.
  *
  * The code that is executing inside the [block] is cancelled on timeout and the active or next invocation of
- * cancellable suspending function inside the block throws [CancellationException]. Normally that exception,
+ * cancellable suspending function inside the block throws [TimeoutException]. Normally that exception,
  * if uncaught by the block, gets converted into the `null` result of `withTimeoutOrNull`.
- * However, the code in the block can suppress [CancellationException].
+ * However, the code in the block can suppress [TimeoutException].
  *
  * The sibling function that throws exception on timeout is [withTimeout].
  * Note, that timeout action can be specified for [select] invocation with [onTimeout][SelectBuilder.onTimeout] clause.
@@ -120,8 +120,21 @@
     }
 }
 
-private class TimeoutException(
+/**
+ * This exception is thrown by [withTimeout] to indicate timeout.
+ */
+public class TimeoutException internal constructor(
+    message: String,
+    @JvmField internal val coroutine: Job?
+) : CancellationException(message) {
+    /**
+     * Creates timeout exception with a given message.
+     */
+    public constructor(message: String) : this(message, null)
+}
+
+private fun TimeoutException(
     time: Long,
     unit: TimeUnit,
-    @JvmField val coroutine: Job
-) : CancellationException("Timed out waiting for $time $unit")
\ No newline at end of file
+    coroutine: Job
+) : TimeoutException = TimeoutException("Timed out waiting for $time $unit", coroutine)
diff --git a/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/ThreadPoolDispatcher.kt b/core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/ThreadPoolDispatcher.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/ThreadPoolDispatcher.kt
rename to core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/ThreadPoolDispatcher.kt
diff --git a/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/TimeSource.kt b/core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/TimeSource.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/TimeSource.kt
rename to core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/TimeSource.kt
diff --git a/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/Yield.kt b/core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/Yield.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/Yield.kt
rename to core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/Yield.kt
diff --git a/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/channels/AbstractChannel.kt b/core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/channels/AbstractChannel.kt
similarity index 94%
rename from kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/channels/AbstractChannel.kt
rename to core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/channels/AbstractChannel.kt
index af009fa..529e638 100644
--- a/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/channels/AbstractChannel.kt
+++ b/core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/channels/AbstractChannel.kt
@@ -22,6 +22,8 @@
 import kotlinx.coroutines.experimental.intrinsics.startCoroutineUndispatched
 import kotlinx.coroutines.experimental.removeOnCancel
 import kotlinx.coroutines.experimental.selects.ALREADY_SELECTED
+import kotlinx.coroutines.experimental.selects.SelectClause1
+import kotlinx.coroutines.experimental.selects.SelectClause2
 import kotlinx.coroutines.experimental.selects.SelectInstance
 import kotlinx.coroutines.experimental.suspendAtomicCancellableCoroutine
 import kotlin.coroutines.experimental.startCoroutine
@@ -134,8 +136,7 @@
      */
     protected fun conflatePreviousSendBuffered(node: LockFreeLinkedListNode) {
         val prev = node.prev
-        if (prev is SendBuffered<*>)
-            prev.remove()
+        (prev as? SendBuffered<*>)?.remove()
     }
 
     /**
@@ -165,8 +166,7 @@
         override fun finishOnSuccess(affected: LockFreeLinkedListNode, next: LockFreeLinkedListNode) {
             super.finishOnSuccess(affected, next)
             // remove previous SendBuffered
-            if (affected is SendBuffered<*>)
-                affected.remove()
+            (affected as? SendBuffered<*>)?.remove()
         }
     }
 
@@ -315,11 +315,11 @@
         }
     }
 
-    private inner class TryEnqueueSendDesc<E, R>(
+    private inner class TryEnqueueSendDesc<R>(
         element: E,
         select: SelectInstance<R>,
-        block: suspend () -> R
-    ) : AddLastDesc<SendSelect<R>>(queue, SendSelect(element, select, block)) {
+        block: suspend (SendChannel<E>) -> R
+    ) : AddLastDesc<SendSelect<E, R>>(queue, SendSelect(element, this@AbstractSendChannel, select, block)) {
         override fun failure(affected: LockFreeLinkedListNode, next: Any): Any? {
             if (affected is ReceiveOrClosed<*>) {
                 return affected as? Closed<*> ?: ENQUEUE_FAILED
@@ -339,7 +339,14 @@
         }
     }
 
-    override fun <R> registerSelectSend(select: SelectInstance<R>, element: E, block: suspend () -> R) {
+    final override val onSend: SelectClause2<E, SendChannel<E>>
+        get() = object : SelectClause2<E, SendChannel<E>> {
+            override fun <R> registerSelectClause2(select: SelectInstance<R>, param: E, block: suspend (SendChannel<E>) -> R) {
+                registerSelectSend(select, param, block)
+            }
+        }
+
+    private fun <R> registerSelectSend(select: SelectInstance<R>, element: E, block: suspend (SendChannel<E>) -> R) {
         while (true) {
             if (select.isSelected) return
             if (isFull) {
@@ -357,7 +364,7 @@
                     offerResult === ALREADY_SELECTED -> return
                     offerResult === OFFER_FAILED -> {} // retry
                     offerResult === OFFER_SUCCESS -> {
-                        block.startCoroutineUndispatched(select.completion)
+                        block.startCoroutineUndispatched(receiver = this, completion = select.completion)
                         return
                     }
                     offerResult is Closed<*> -> throw offerResult.sendException
@@ -369,17 +376,18 @@
 
     // ------ private ------
 
-    private class SendSelect<R>(
+    private class SendSelect<E, R>(
         override val pollResult: Any?,
+        @JvmField val channel: SendChannel<E>,
         @JvmField val select: SelectInstance<R>,
-        @JvmField val block: suspend () -> R
+        @JvmField val block: suspend (SendChannel<E>) -> R
     ) : LockFreeLinkedListNode(), Send, DisposableHandle {
         override fun tryResumeSend(idempotent: Any?): Any? =
             if (select.trySelect(idempotent)) SELECT_STARTED else null
 
         override fun completeResumeSend(token: Any) {
             check(token === SELECT_STARTED)
-            block.startCoroutine(select.completion)
+            block.startCoroutine(receiver = channel, completion = select.completion)
         }
 
         fun disposeOnSelect() {
@@ -390,7 +398,7 @@
             remove()
         }
 
-        override fun toString(): String = "SendSelect($pollResult)[$select]"
+        override fun toString(): String = "SendSelect($pollResult)[$channel, $select]"
     }
 
     private class SendBuffered<out E>(
@@ -614,8 +622,15 @@
         }
     }
 
+    final override val onReceive: SelectClause1<E>
+        get() = object : SelectClause1<E> {
+            override fun <R> registerSelectClause1(select: SelectInstance<R>, block: suspend (E) -> R) {
+                registerSelectReceive(select, block)
+            }
+        }
+
     @Suppress("UNCHECKED_CAST")
-    override fun <R> registerSelectReceive(select: SelectInstance<R>, block: suspend (E) -> R) {
+    private fun <R> registerSelectReceive(select: SelectInstance<R>, block: suspend (E) -> R) {
         while (true) {
             if (select.isSelected) return
             if (isEmpty) {
@@ -641,8 +656,15 @@
         }
     }
 
+    final override val onReceiveOrNull: SelectClause1<E?>
+        get() = object : SelectClause1<E?> {
+            override fun <R> registerSelectClause1(select: SelectInstance<R>, block: suspend (E?) -> R) {
+                registerSelectReceiveOrNull(select, block)
+            }
+        }
+
     @Suppress("UNCHECKED_CAST")
-    override fun <R> registerSelectReceiveOrNull(select: SelectInstance<R>, block: suspend (E?) -> R) {
+    private fun <R> registerSelectReceiveOrNull(select: SelectInstance<R>, block: suspend (E?) -> R) {
         while (true) {
             if (select.isSelected) return
             if (isEmpty) {
diff --git a/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/channels/Actor.kt b/core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/channels/Actor.kt
similarity index 91%
rename from kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/channels/Actor.kt
rename to core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/channels/Actor.kt
index 9d8c89d..b2de4a9 100644
--- a/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/channels/Actor.kt
+++ b/core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/channels/Actor.kt
@@ -17,6 +17,7 @@
 package kotlinx.coroutines.experimental.channels
 
 import kotlinx.coroutines.experimental.*
+import kotlinx.coroutines.experimental.selects.SelectClause2
 import kotlinx.coroutines.experimental.selects.SelectInstance
 import kotlin.coroutines.experimental.CoroutineContext
 
@@ -105,7 +106,7 @@
     parentContext: CoroutineContext,
     channel: Channel<E>,
     private val block: suspend ActorScope<E>.() -> Unit
-) : ActorCoroutine<E>(parentContext, channel, active = false) {
+) : ActorCoroutine<E>(parentContext, channel, active = false), SelectClause2<E, SendChannel<E>> {
     override val channel: Channel<E> get() = this
 
     override fun onStart() {
@@ -122,9 +123,13 @@
         return super.offer(element)
     }
 
-    override fun <R> registerSelectSend(select: SelectInstance<R>, element: E, block: suspend () -> R) {
+    override val onSend: SelectClause2<E, SendChannel<E>>
+        get() = this
+
+    // registerSelectSend
+    override fun <R> registerSelectClause2(select: SelectInstance<R>, param: E, block: suspend (SendChannel<E>) -> R) {
         start()
-        return super.registerSelectSend(select, element, block)
+        super.onSend.registerSelectClause2(select, param, block)
     }
 }
 
diff --git a/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/channels/ArrayBroadcastChannel.kt b/core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/channels/ArrayBroadcastChannel.kt
similarity index 94%
rename from kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/channels/ArrayBroadcastChannel.kt
rename to core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/channels/ArrayBroadcastChannel.kt
index 6c778a7..97b85eb 100644
--- a/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/channels/ArrayBroadcastChannel.kt
+++ b/core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/channels/ArrayBroadcastChannel.kt
@@ -338,13 +338,20 @@
             val subHead = this.subHead // guarded read (can be non-volatile read)
             // note: from the broadcastChannel we must read closed token first, then read its tail
             // because it is Ok if tail moves in between the reads (we make decision based on tail first)
-            val closed = broadcastChannel.closedForReceive // unguarded volatile read
+            val closedBroadcast = broadcastChannel.closedForReceive // unguarded volatile read
             val tail = broadcastChannel.tail // unguarded volatile read
             if (subHead >= tail) {
                 // no elements to poll from the queue -- check if closed
-                return closed ?: POLL_FAILED // must retest `needsToCheckOfferWithoutLock` outside of the lock
+                return closedBroadcast ?: POLL_FAILED // must retest `needsToCheckOfferWithoutLock` outside of the lock
             }
-            return broadcastChannel.elementAt(subHead)
+            // Get tentative result. This result may be wrong (completely invalid value, including null),
+            // because this subscription might get closed, moving channel's head past this subscription's head.
+            val result = broadcastChannel.elementAt(subHead)
+            // now check if this subscription was closed
+            val closedSub = this.closedForReceive
+            if (closedSub != null) return closedSub
+            // we know the subscription was not closed, so this tentative result is Ok to return
+            return result
         }
     }
 }
\ No newline at end of file
diff --git a/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/channels/ArrayChannel.kt b/core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/channels/ArrayChannel.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/channels/ArrayChannel.kt
rename to core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/channels/ArrayChannel.kt
diff --git a/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/channels/BroadcastChannel.kt b/core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/channels/BroadcastChannel.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/channels/BroadcastChannel.kt
rename to core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/channels/BroadcastChannel.kt
diff --git a/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/channels/Channel.kt b/core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/channels/Channel.kt
similarity index 90%
rename from kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/channels/Channel.kt
rename to core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/channels/Channel.kt
index 2bddca3..a5f096e 100644
--- a/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/channels/Channel.kt
+++ b/core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/channels/Channel.kt
@@ -21,8 +21,8 @@
 import kotlinx.coroutines.experimental.Job
 import kotlinx.coroutines.experimental.channels.Channel.Factory.CONFLATED
 import kotlinx.coroutines.experimental.channels.Channel.Factory.UNLIMITED
-import kotlinx.coroutines.experimental.selects.SelectBuilder
-import kotlinx.coroutines.experimental.selects.SelectInstance
+import kotlinx.coroutines.experimental.selects.SelectClause1
+import kotlinx.coroutines.experimental.selects.SelectClause2
 import kotlinx.coroutines.experimental.selects.select
 import kotlinx.coroutines.experimental.yield
 
@@ -66,12 +66,23 @@
      * Note, that this function does not check for cancellation when it is not suspended.
      * Use [yield] or [CoroutineScope.isActive] to periodically check for cancellation in tight loops if needed.
      *
-     * This function can be used in [select] invocation with [onSend][SelectBuilder.onSend] clause.
+     * This function can be used in [select] invocation with [onSend] clause.
      * Use [offer] to try sending to this channel without waiting.
      */
     public suspend fun send(element: E)
 
     /**
+     * Clause for [select] expression of [send] suspending function that selects when the element that is specified
+     * as parameter is sent to the channel. When the clause is selected the reference to this channel
+     * is passed into the corresponding block.
+     *
+     * The [select] invocation fails with [ClosedSendChannelException] if the channel
+     * [isClosedForSend][SendChannel.isClosedForSend] _normally_ or with the original
+     * [close][SendChannel.close] cause exception if the channel has _failed_.
+     */
+    public val onSend: SelectClause2<E, SendChannel<E>>
+
+    /**
      * Adds [element] into this queue if it is possible to do so immediately without violating capacity restrictions
      * and returns `true`. Otherwise, it returns `false` immediately
      * or throws [ClosedSendChannelException] if the channel [isClosedForSend] _normally_.
@@ -80,12 +91,6 @@
     public fun offer(element: E): Boolean
 
     /**
-     * Registers [onSend][SelectBuilder.onSend] select clause.
-     * @suppress **This is unstable API and it is subject to change.**
-     */
-    public fun <R> registerSelectSend(select: SelectInstance<R>, element: E, block: suspend () -> R)
-
-    /**
      * Closes this channel with an optional exceptional [cause].
      * This is an idempotent operation -- repeated invocations of this function have no effect and return `false`.
      * Conceptually, its sends a special "close token" over this channel. Immediately after invocation of this function
@@ -137,12 +142,21 @@
      * Note, that this function does not check for cancellation when it is not suspended.
      * Use [yield] or [CoroutineScope.isActive] to periodically check for cancellation in tight loops if needed.
      *
-     * This function can be used in [select] invocation with [onReceive][SelectBuilder.onReceive] clause.
+     * This function can be used in [select] invocation with [onReceive] clause.
      * Use [poll] to try receiving from this channel without waiting.
      */
     public suspend fun receive(): E
 
     /**
+     * Clause for [select] expression of [receive] suspending function that selects with the element that
+     * is received from the channel.
+     * The [select] invocation fails with [ClosedReceiveChannelException] if the channel
+     * [isClosedForReceive][ReceiveChannel.isClosedForReceive] _normally_ or with the original
+     * [close][SendChannel.close] cause exception if the channel has _failed_.
+     */
+    public val onReceive: SelectClause1<E>
+
+    /**
      * Retrieves and removes the element from this channel suspending the caller while this channel [isEmpty]
      * or returns `null` if the channel is [closed][isClosedForReceive] _normally_,
      * or throws the original [close][SendChannel.close] cause exception if the channel has _failed_.
@@ -159,12 +173,20 @@
      * Note, that this function does not check for cancellation when it is not suspended.
      * Use [yield] or [CoroutineScope.isActive] to periodically check for cancellation in tight loops if needed.
      *
-     * This function can be used in [select] invocation with [onReceiveOrNull][SelectBuilder.onReceiveOrNull] clause.
+     * This function can be used in [select] invocation with [onReceiveOrNull] clause.
      * Use [poll] to try receiving from this channel without waiting.
      */
     public suspend fun receiveOrNull(): E?
 
     /**
+     * Clause for [select] expression of [receiveOrNull] suspending function that selects with the element that
+     * is received from the channel or selects with `null` if if the channel
+     * [isClosedForReceive][ReceiveChannel.isClosedForReceive] _normally_. The [select] invocation fails with
+     * the original [close][SendChannel.close] cause exception if the channel has _failed_.
+     */
+    public val onReceiveOrNull: SelectClause1<E?>
+
+    /**
      * Retrieves and removes the head of this queue, or returns `null` if this queue [isEmpty]
      * or is [closed][isClosedForReceive] _normally_,
      * or throws the original [close][SendChannel.close] cause exception if the channel has _failed_.
@@ -177,18 +199,6 @@
      * throws the original [close][SendChannel.close] cause exception if the channel has _failed_.
      */
     public operator fun iterator(): ChannelIterator<E>
-
-    /**
-     * Registers [onReceive][SelectBuilder.onReceive] select clause.
-     * @suppress **This is unstable API and it is subject to change.**
-     */
-    public fun <R> registerSelectReceive(select: SelectInstance<R>, block: suspend (E) -> R)
-
-    /**
-     * Registers [onReceiveOrNull][SelectBuilder.onReceiveOrNull] select clause.
-     * @suppress **This is unstable API and it is subject to change.**
-     */
-    public fun <R> registerSelectReceiveOrNull(select: SelectInstance<R>, block: suspend (E?) -> R)
 }
 
 /**
diff --git a/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/channels/ChannelCoroutine.kt b/core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/channels/ChannelCoroutine.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/channels/ChannelCoroutine.kt
rename to core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/channels/ChannelCoroutine.kt
diff --git a/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/channels/Channels.kt b/core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/channels/Channels.kt
similarity index 66%
rename from kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/channels/Channels.kt
rename to core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/channels/Channels.kt
index eafc155..c21d30c 100644
--- a/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/channels/Channels.kt
+++ b/core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/channels/Channels.kt
@@ -21,17 +21,29 @@
 /**
  * Performs the given [action] for each received element.
  */
-// :todo: make it inline when this bug is fixed: https://youtrack.jetbrains.com/issue/KT-16448
-public suspend fun <E> ReceiveChannel<E>.consumeEach(action: suspend (E) -> Unit) {
+public inline suspend fun <E> ReceiveChannel<E>.consumeEach(action: (E) -> Unit) {
     for (element in this) action(element)
 }
 
 /**
+ * @suppress: **Deprecated**: binary compatibility with old code
+ */
+@Deprecated("binary compatibility with old code", level = DeprecationLevel.HIDDEN)
+public suspend fun <E> ReceiveChannel<E>.consumeEach(action: suspend (E) -> Unit) =
+    consumeEach { action(it) }
+
+/**
  * Subscribes to this [BroadcastChannel] and performs the specified action for each received element.
  */
-// :todo: make it inline when this bug is fixed: https://youtrack.jetbrains.com/issue/KT-16448
-public suspend fun <E> BroadcastChannel<E>.consumeEach(action: suspend (E) -> Unit) {
+public inline suspend fun <E> BroadcastChannel<E>.consumeEach(action: (E) -> Unit) {
     openSubscription().use { channel ->
         for (x in channel) action(x)
     }
 }
+
+/**
+ * @suppress: **Deprecated**: binary compatibility with old code
+ */
+@Deprecated("binary compatibility with old code", level = DeprecationLevel.HIDDEN)
+public suspend fun <E> BroadcastChannel<E>.consumeEach(action: suspend (E) -> Unit) =
+    consumeEach { action(it) }
diff --git a/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/channels/ConflatedBroadcastChannel.kt b/core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/channels/ConflatedBroadcastChannel.kt
similarity index 94%
rename from kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/channels/ConflatedBroadcastChannel.kt
rename to core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/channels/ConflatedBroadcastChannel.kt
index 1132bec..a2ee21c 100644
--- a/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/channels/ConflatedBroadcastChannel.kt
+++ b/core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/channels/ConflatedBroadcastChannel.kt
@@ -20,6 +20,7 @@
 import kotlinx.atomicfu.loop
 import kotlinx.coroutines.experimental.internal.Symbol
 import kotlinx.coroutines.experimental.intrinsics.startCoroutineUndispatched
+import kotlinx.coroutines.experimental.selects.SelectClause2
 import kotlinx.coroutines.experimental.selects.SelectInstance
 
 /**
@@ -233,13 +234,20 @@
         }
     }
 
-    override fun <R> registerSelectSend(select: SelectInstance<R>, element: E, block: suspend () -> R) {
+    override val onSend: SelectClause2<E, SendChannel<E>>
+        get() = object : SelectClause2<E, SendChannel<E>> {
+            override fun <R> registerSelectClause2(select: SelectInstance<R>, param: E, block: suspend (SendChannel<E>) -> R) {
+                registerSelectSend(select, param, block)
+            }
+        }
+
+    private fun <R> registerSelectSend(select: SelectInstance<R>, element: E, block: suspend (SendChannel<E>) -> R) {
         if (!select.trySelect(null)) return
         offerInternal(element)?.let {
             select.resumeSelectCancellableWithException(it.sendException)
             return
         }
-        block.startCoroutineUndispatched(select.completion)
+        block.startCoroutineUndispatched(receiver = this, completion = select.completion)
     }
 
     private class Subscriber<E>(
diff --git a/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/channels/ConflatedChannel.kt b/core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/channels/ConflatedChannel.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/channels/ConflatedChannel.kt
rename to core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/channels/ConflatedChannel.kt
diff --git a/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/channels/LinkedListChannel.kt b/core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/channels/LinkedListChannel.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/channels/LinkedListChannel.kt
rename to core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/channels/LinkedListChannel.kt
diff --git a/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/channels/Produce.kt b/core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/channels/Produce.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/channels/Produce.kt
rename to core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/channels/Produce.kt
diff --git a/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/channels/RendezvousChannel.kt b/core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/channels/RendezvousChannel.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/channels/RendezvousChannel.kt
rename to core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/channels/RendezvousChannel.kt
diff --git a/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/internal/Atomic.kt b/core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/internal/Atomic.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/internal/Atomic.kt
rename to core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/internal/Atomic.kt
diff --git a/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/internal/LockFreeLinkedList.kt b/core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/internal/LockFreeLinkedList.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/internal/LockFreeLinkedList.kt
rename to core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/internal/LockFreeLinkedList.kt
diff --git a/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/internal/Symbol.kt b/core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/internal/Symbol.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/internal/Symbol.kt
rename to core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/internal/Symbol.kt
diff --git a/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/internal/ThreadSafeHeap.kt b/core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/internal/ThreadSafeHeap.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/internal/ThreadSafeHeap.kt
rename to core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/internal/ThreadSafeHeap.kt
diff --git a/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/intrinsics/Undispatched.kt b/core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/intrinsics/Undispatched.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/intrinsics/Undispatched.kt
rename to core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/intrinsics/Undispatched.kt
diff --git a/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/selects/Select.kt b/core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/selects/Select.kt
similarity index 79%
rename from kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/selects/Select.kt
rename to core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/selects/Select.kt
index 1bfff3c..0f0c55f 100644
--- a/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/selects/Select.kt
+++ b/core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/selects/Select.kt
@@ -19,8 +19,6 @@
 import kotlinx.atomicfu.atomic
 import kotlinx.atomicfu.loop
 import kotlinx.coroutines.experimental.*
-import kotlinx.coroutines.experimental.channels.ClosedReceiveChannelException
-import kotlinx.coroutines.experimental.channels.ClosedSendChannelException
 import kotlinx.coroutines.experimental.channels.ReceiveChannel
 import kotlinx.coroutines.experimental.channels.SendChannel
 import kotlinx.coroutines.experimental.internal.*
@@ -37,49 +35,25 @@
  */
 public interface SelectBuilder<in R> {
     /**
-     * Clause for [Job.join] suspending function that selects the given [block] when the job is complete.
-     * This clause never fails, even if the job completes exceptionally.
+     * Registers clause in this [select] expression without additional parameters that does not select any value.
      */
-    public fun Job.onJoin(block: suspend () -> R)
+    public operator fun SelectClause0.invoke(block: suspend () -> R)
 
     /**
-     * Clause for [Deferred.await] suspending function that selects the given [block] with the deferred value is
-     * resolved. The [select] invocation fails if the deferred value completes exceptionally (either fails or
-     * it cancelled).
+     * Registers clause in this [select] expression without additional parameters that selects value of type [Q].
      */
-    public fun <T> Deferred<T>.onAwait(block: suspend (T) -> R)
+    public operator fun <Q> SelectClause1<Q>.invoke(block: suspend (Q) -> R)
 
     /**
-     * Clause for [SendChannel.send] suspending function that selects the given [block] when the [element] is sent to
-     * the channel. The [select] invocation fails with [ClosedSendChannelException] if the channel
-     * [isClosedForSend][SendChannel.isClosedForSend] _normally_ or with the original
-     * [close][SendChannel.close] cause exception if the channel has _failed_.
+     * Registers clause in this [select] expression with additional parameter of type [P] that selects value of type [Q].
      */
-    public fun <E> SendChannel<E>.onSend(element: E, block: suspend () -> R)
+    public operator fun <P, Q> SelectClause2<P, Q>.invoke(param: P, block: suspend (Q) -> R)
 
     /**
-     * Clause for [ReceiveChannel.receive] suspending function that selects the given [block] with the element that
-     * is received from the channel. The [select] invocation fails with [ClosedReceiveChannelException] if the channel
-     * [isClosedForReceive][ReceiveChannel.isClosedForReceive] _normally_ or with the original
-     * [close][SendChannel.close] cause exception if the channel has _failed_.
+     * Registers clause in this [select] expression with additional parameter nullable parameter of type [P]
+     * with the `null` value for this parameter that selects value of type [Q].
      */
-    public fun <E> ReceiveChannel<E>.onReceive(block: suspend (E) -> R)
-
-    /**
-     * Clause for [ReceiveChannel.receiveOrNull] suspending function that selects the given [block] with the element that
-     * is received from the channel or selects the given [block] with `null` if if the channel
-     * [isClosedForReceive][ReceiveChannel.isClosedForReceive] _normally_. The [select] invocation fails with
-     * the original [close][SendChannel.close] cause exception if the channel has _failed_.
-     */
-    public fun <E> ReceiveChannel<E>.onReceiveOrNull(block: suspend (E?) -> R)
-
-    /**
-     * Clause for [Mutex.lock] suspending function that selects the given [block] when the mutex is locked.
-     *
-     * @param owner Optional owner token for debugging. When `owner` is specified (non-null value) and this mutex
-     *        is already locked with the same token (same identity), this clause throws [IllegalStateException].
-     */
-    public fun Mutex.onLock(owner: Any? = null, block: suspend () -> R)
+    public operator fun <P, Q> SelectClause2<P?, Q>.invoke(block: suspend (Q) -> R) = invoke(null, block)
 
     /**
      * Clause that selects the given [block] after a specified timeout passes.
@@ -88,6 +62,63 @@
      * @param unit timeout unit (milliseconds by default)
      */
     public fun onTimeout(time: Long, unit: TimeUnit = TimeUnit.MILLISECONDS, block: suspend () -> R)
+
+    /** @suppress **Deprecated: for binary compatibility only **/
+    @Deprecated("for binary compatibility only", level=DeprecationLevel.HIDDEN)
+    public fun Job.onJoin(block: suspend () -> R) { onJoin(block) }
+
+    /** @suppress **Deprecated: for binary compatibility only **/
+    @Deprecated("for binary compatibility only", level=DeprecationLevel.HIDDEN)
+    public fun <T> Deferred<T>.onAwait(block: suspend (T) -> R) { onAwait(block) }
+
+    /** @suppress **Deprecated: for binary compatibility only **/
+    @Deprecated("for binary compatibility only", level=DeprecationLevel.HIDDEN)
+    public fun Mutex.onLock(owner: Any? = null, block: suspend () -> R) { onLock { block() } }
+
+    /** @suppress **Deprecated: for binary compatibility only **/
+    @Deprecated("for binary compatibility only", level=DeprecationLevel.HIDDEN)
+    public fun <E> SendChannel<E>.onSend(element: E, block: suspend () -> R) { onSend(element) { block() } }
+
+    /** @suppress **Deprecated: for binary compatibility only **/
+    @Deprecated("for binary compatibility only", level=DeprecationLevel.HIDDEN)
+    public fun <E> ReceiveChannel<E>.onReceive(block: suspend (E) -> R) { onReceive(block) }
+
+    /** @suppress **Deprecated: for binary compatibility only **/
+    @Deprecated("for binary compatibility only", level=DeprecationLevel.HIDDEN)
+    public fun <E> ReceiveChannel<E>.onReceiveOrNull(block: suspend (E?) -> R) { onReceiveOrNull(block) }
+}
+
+/**
+ * Clause for [select] expression without additional parameters that does not select any value.
+ */
+public interface SelectClause0 {
+    /**
+     * Registers this clause with the specified [select] instance and [block] of code.
+     * @suppress **This is unstable API and it is subject to change.**
+     */
+    public fun <R> registerSelectClause0(select: SelectInstance<R>, block: suspend () -> R)
+}
+
+/**
+ * Clause for [select] expression without additional parameters that selects value of type [Q].
+ */
+public interface SelectClause1<out Q> {
+    /**
+     * Registers this clause with the specified [select] instance and [block] of code.
+     * @suppress **This is unstable API and it is subject to change.**
+     */
+    public fun <R> registerSelectClause1(select: SelectInstance<R>, block: suspend (Q) -> R)
+}
+
+/**
+ * Clause for [select] expression with additional parameter of type [P] that selects value of type [Q].
+ */
+public interface SelectClause2<in P, out Q> {
+    /**
+     * Registers this clause with the specified [select] instance and [block] of code.
+     * @suppress **This is unstable API and it is subject to change.**
+     */
+    public fun <R> registerSelectClause2(select: SelectInstance<R>, param: P, block: suspend (Q) -> R)
 }
 
 /**
@@ -120,15 +151,18 @@
     /**
      * Returns completion continuation of this select instance.
      * This select instance must be _selected_ first.
-     * All resumption through this instance happen _directly_ (as if `mode` is [MODE_DIRECT]).
+     * All resumption through this instance happen _directly_ without going through dispatcher ([MODE_DIRECT]).
      */
     public val completion: Continuation<R>
 
     /**
-     * Resumes this instance with [MODE_CANCELLABLE].
+     * Resumes this instance in a cancellable way ([MODE_CANCELLABLE]).
      */
     public fun resumeSelectCancellableWithException(exception: Throwable)
 
+    /**
+     * Disposes the specified handle when this instance is selected.
+     */
     public fun disposeOnSelect(handle: DisposableHandle)
 }
 
@@ -393,28 +427,16 @@
         }
     }
 
-    override fun Job.onJoin(block: suspend () -> R) {
-        registerSelectJoin(this@SelectBuilderImpl, block)
+    override fun SelectClause0.invoke(block: suspend () -> R) {
+        registerSelectClause0(this@SelectBuilderImpl, block)
     }
 
-    override fun <T> Deferred<T>.onAwait(block: suspend (T) -> R) {
-        registerSelectAwait(this@SelectBuilderImpl, block)
+    override fun <Q> SelectClause1<Q>.invoke(block: suspend (Q) -> R) {
+        registerSelectClause1(this@SelectBuilderImpl, block)
     }
 
-    override fun <E> SendChannel<E>.onSend(element: E, block: suspend () -> R) {
-        registerSelectSend(this@SelectBuilderImpl, element, block)
-    }
-
-    override fun <E> ReceiveChannel<E>.onReceive(block: suspend (E) -> R) {
-        registerSelectReceive(this@SelectBuilderImpl, block)
-    }
-
-    override fun <E> ReceiveChannel<E>.onReceiveOrNull(block: suspend (E?) -> R) {
-        registerSelectReceiveOrNull(this@SelectBuilderImpl, block)
-    }
-
-    override fun Mutex.onLock(owner: Any?, block: suspend () -> R) {
-        registerSelectLock(this@SelectBuilderImpl, owner, block)
+    override fun <P, Q> SelectClause2<P, Q>.invoke(param: P, block: suspend (Q) -> R) {
+        registerSelectClause2(this@SelectBuilderImpl, param, block)
     }
 
     override fun onTimeout(time: Long, unit: TimeUnit, block: suspend () -> R) {
diff --git a/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/selects/SelectUnbiased.kt b/core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/selects/SelectUnbiased.kt
similarity index 69%
rename from kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/selects/SelectUnbiased.kt
rename to core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/selects/SelectUnbiased.kt
index b6b84bc..cf79b47 100644
--- a/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/selects/SelectUnbiased.kt
+++ b/core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/selects/SelectUnbiased.kt
@@ -16,11 +16,6 @@
 
 package kotlinx.coroutines.experimental.selects
 
-import kotlinx.coroutines.experimental.Deferred
-import kotlinx.coroutines.experimental.Job
-import kotlinx.coroutines.experimental.channels.ReceiveChannel
-import kotlinx.coroutines.experimental.channels.SendChannel
-import kotlinx.coroutines.experimental.sync.Mutex
 import java.util.*
 import java.util.concurrent.TimeUnit
 import kotlin.coroutines.experimental.Continuation
@@ -69,28 +64,16 @@
         return instance.getResult()
     }
 
-    override fun Job.onJoin(block: suspend () -> R) {
-        clauses += { registerSelectJoin(instance, block) }
+    override fun SelectClause0.invoke(block: suspend () -> R) {
+        clauses += { registerSelectClause0(instance, block) }
     }
 
-    override fun <T> Deferred<T>.onAwait(block: suspend (T) -> R) {
-        clauses += { registerSelectAwait(instance, block) }
+    override fun <Q> SelectClause1<Q>.invoke(block: suspend (Q) -> R) {
+        clauses += { registerSelectClause1(instance, block) }
     }
 
-    override fun <E> SendChannel<E>.onSend(element: E, block: suspend () -> R) {
-        clauses += { registerSelectSend(instance, element, block) }
-    }
-
-    override fun <E> ReceiveChannel<E>.onReceive(block: suspend (E) -> R) {
-        clauses += { registerSelectReceive(instance, block) }
-    }
-
-    override fun <E> ReceiveChannel<E>.onReceiveOrNull(block: suspend (E?) -> R) {
-        clauses += { registerSelectReceiveOrNull(instance, block) }
-    }
-
-    override fun Mutex.onLock(owner: Any?, block: suspend () -> R) {
-        clauses += { registerSelectLock(instance, owner, block) }
+    override fun <P, Q> SelectClause2<P, Q>.invoke(param: P, block: suspend (Q) -> R) {
+        clauses += { registerSelectClause2(instance, param, block) }
     }
 
     override fun onTimeout(time: Long, unit: TimeUnit, block: suspend () -> R) {
diff --git a/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/selects/WhileSelect.kt b/core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/selects/WhileSelect.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/selects/WhileSelect.kt
rename to core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/selects/WhileSelect.kt
diff --git a/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/sync/Mutex.kt b/core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/sync/Mutex.kt
similarity index 89%
rename from kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/sync/Mutex.kt
rename to core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/sync/Mutex.kt
index cd33fe3..3130085 100644
--- a/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/sync/Mutex.kt
+++ b/core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/sync/Mutex.kt
@@ -22,7 +22,7 @@
 import kotlinx.coroutines.experimental.internal.*
 import kotlinx.coroutines.experimental.intrinsics.startCoroutineUndispatched
 import kotlinx.coroutines.experimental.selects.ALREADY_SELECTED
-import kotlinx.coroutines.experimental.selects.SelectBuilder
+import kotlinx.coroutines.experimental.selects.SelectClause2
 import kotlinx.coroutines.experimental.selects.SelectInstance
 import kotlinx.coroutines.experimental.selects.select
 import kotlin.coroutines.experimental.startCoroutine
@@ -76,7 +76,7 @@
      * Note, that this function does not check for cancellation when it is not suspended.
      * Use [yield] or [CoroutineScope.isActive] to periodically check for cancellation in tight loops if needed.
      *
-     * This function can be used in [select] invocation with [onLock][SelectBuilder.onLock] clause.
+     * This function can be used in [select] invocation with [onLock] clause.
      * Use [tryLock] to try acquire lock without waiting.
      *
      * @param owner Optional owner token for debugging. When `owner` is specified (non-null value) and this mutex
@@ -85,12 +85,20 @@
     public suspend fun lock(owner: Any? = null)
 
     /**
-     * Registers [onLock][SelectBuilder.onLock] select clause.
-     * @suppress **This is unstable API and it is subject to change.**
+     * Clause for [select] expression of [lock] suspending function that selects when the mutex is locked.
+     * Additional parameter for the clause in the `owner` (see [lock]) and when the clause is selected
+     * the reference to this mutex is passed into the corresponding block.
      */
-    public fun <R> registerSelectLock(select: SelectInstance<R>, owner: Any?, block: suspend () -> R)
+    public val onLock: SelectClause2<Any?, Mutex>
 
     /**
+     * Checks mutex locked by owner
+     *
+     * @return `true` on mutex lock by owner, `false` if not locker or it is locked by different owner
+     */
+    public fun holdsLock(owner: Any): Boolean
+
+        /**
      * Unlocks this mutex. Throws [IllegalStateException] if invoked on a mutex that is not locked.
      *
      * @param owner Optional owner token for debugging. When `owner` is specified (non-null value) and this mutex
@@ -114,8 +122,7 @@
  *
  * @return the return value of the action.
  */
-// :todo: this function needs to be make inline as soon as this bug is fixed: https://youtrack.jetbrains.com/issue/KT-16448
-public suspend fun <T> Mutex.withLock(owner: Any? = null, action: suspend () -> T): T {
+public inline suspend fun <T> Mutex.withLock(owner: Any? = null, action: () -> T): T {
     lock(owner)
     try {
         return action()
@@ -125,23 +132,25 @@
 }
 
 /**
+ * @suppress: **Deprecated**: binary compatibility with old code
+ */
+@Deprecated("binary compatibility with old code", level = DeprecationLevel.HIDDEN)
+public suspend fun <T> Mutex.withLock(owner: Any? = null, action: suspend () -> T): T =
+    withLock(owner) { action() }
+
+/**
  * @suppress: **Deprecated**: Use [withLock]
  */
 @Deprecated("Use `withLock(owner, action)", level = DeprecationLevel.HIDDEN)
-public suspend fun <T> Mutex.withLock(action: suspend () -> T): T = withLock(null, action)
+public suspend fun <T> Mutex.withLock(action: suspend () -> T): T =
+    withLock { action() }
 
 /**
  * @suppress: **Deprecated**: Use [withLock]
  */
 @Deprecated("Use `withLock`", replaceWith = ReplaceWith("withLock(action)"))
-public suspend fun <T> Mutex.withMutex(action: suspend () -> T): T {
-    lock()
-    try {
-        return action()
-    } finally {
-        unlock()
-    }
-}
+public suspend fun <T> Mutex.withMutex(action: suspend () -> T): T =
+    withLock { action() }
 
 private val LOCK_FAIL = Symbol("LOCK_FAIL")
 private val ENQUEUE_FAIL = Symbol("ENQUEUE_FAIL")
@@ -161,7 +170,7 @@
     override fun toString(): String = "Empty[$locked]"
 }
 
-internal class MutexImpl(locked: Boolean) : Mutex {
+internal class MutexImpl(locked: Boolean) : Mutex, SelectClause2<Any?, Mutex> {
     // State is: Empty | LockedQueue | OpDescriptor
     // shared objects while we have no waiters
     private val _state = atomic<Any?>(if (locked) EmptyLocked else EmptyUnlocked)
@@ -243,7 +252,12 @@
         }
     }
 
-    override fun <R> registerSelectLock(select: SelectInstance<R>, owner: Any?, block: suspend () -> R) {
+    override val onLock: SelectClause2<Any?, Mutex>
+        get() = this
+
+    // registerSelectLock
+    @Suppress("PARAMETER_NAME_CHANGED_ON_OVERRIDE")
+    override fun <R> registerSelectClause2(select: SelectInstance<R>, owner: Any?, block: suspend (Mutex) -> R) {
         while (true) { // lock-free loop on state
             if (select.isSelected) return
             val state = _state.value
@@ -256,7 +270,7 @@
                         val failure = select.performAtomicTrySelect(TryLockDesc(this, owner))
                         when {
                             failure == null -> { // success
-                                block.startCoroutineUndispatched(select.completion)
+                                block.startCoroutineUndispatched(receiver = this, completion = select.completion)
                                 return
                             }
                             failure === ALREADY_SELECTED -> return // already selected -- bail out
@@ -317,14 +331,23 @@
         owner: Any?,
         queue: LockedQueue,
         select: SelectInstance<R>,
-        block: suspend () -> R
-    ) : AddLastDesc<LockSelect<R>>(queue, LockSelect(owner, select, block)) {
+        block: suspend (Mutex) -> R
+    ) : AddLastDesc<LockSelect<R>>(queue, LockSelect(owner, mutex, select, block)) {
         override fun onPrepare(affected: LockFreeLinkedListNode, next: LockFreeLinkedListNode): Any? {
             if (mutex._state.value !== queue) return ENQUEUE_FAIL
             return super.onPrepare(affected, next)
         }
     }
 
+    public override fun holdsLock(owner: Any) =
+            _state.value.let { state ->
+                when (state) {
+                    is Empty -> state.locked === owner
+                    is LockedQueue -> state.owner === owner
+                    else -> false
+                }
+            }
+
     public override fun unlock(owner: Any?) {
         _state.loop { state ->
             when (state) {
@@ -438,15 +461,16 @@
 
     private class LockSelect<R>(
         owner: Any?,
+        @JvmField val mutex: Mutex,
         @JvmField val select: SelectInstance<R>,
-        @JvmField val block: suspend () -> R
+        @JvmField val block: suspend (Mutex) -> R
     ) : LockWaiter(owner) {
         override fun tryResumeLockWaiter(): Any? = if (select.trySelect(null)) SELECT_SUCCESS else null
         override fun completeResumeLockWaiter(token: Any) {
             check(token === SELECT_SUCCESS)
-            block.startCoroutine(select.completion)
+            block.startCoroutine(receiver = mutex, completion = select.completion)
         }
-        override fun toString(): String = "LockSelect[$owner, $select]"
+        override fun toString(): String = "LockSelect[$owner, $mutex, $select]"
     }
 
     // atomic unlock operation that checks that waiters queue is empty
diff --git a/kotlinx-coroutines-core/src/test/kotlin/guide/example-basic-01.kt b/core/kotlinx-coroutines-core/src/test/kotlin/guide/example-basic-01.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/guide/example-basic-01.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/guide/example-basic-01.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/guide/example-basic-02.kt b/core/kotlinx-coroutines-core/src/test/kotlin/guide/example-basic-02.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/guide/example-basic-02.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/guide/example-basic-02.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/guide/example-basic-03.kt b/core/kotlinx-coroutines-core/src/test/kotlin/guide/example-basic-03.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/guide/example-basic-03.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/guide/example-basic-03.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/guide/example-basic-04.kt b/core/kotlinx-coroutines-core/src/test/kotlin/guide/example-basic-04.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/guide/example-basic-04.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/guide/example-basic-04.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/guide/example-basic-05.kt b/core/kotlinx-coroutines-core/src/test/kotlin/guide/example-basic-05.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/guide/example-basic-05.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/guide/example-basic-05.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/guide/example-basic-06.kt b/core/kotlinx-coroutines-core/src/test/kotlin/guide/example-basic-06.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/guide/example-basic-06.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/guide/example-basic-06.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/guide/example-cancel-01.kt b/core/kotlinx-coroutines-core/src/test/kotlin/guide/example-cancel-01.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/guide/example-cancel-01.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/guide/example-cancel-01.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/guide/example-cancel-02.kt b/core/kotlinx-coroutines-core/src/test/kotlin/guide/example-cancel-02.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/guide/example-cancel-02.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/guide/example-cancel-02.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/guide/example-cancel-03.kt b/core/kotlinx-coroutines-core/src/test/kotlin/guide/example-cancel-03.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/guide/example-cancel-03.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/guide/example-cancel-03.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/guide/example-cancel-04.kt b/core/kotlinx-coroutines-core/src/test/kotlin/guide/example-cancel-04.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/guide/example-cancel-04.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/guide/example-cancel-04.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/guide/example-cancel-05.kt b/core/kotlinx-coroutines-core/src/test/kotlin/guide/example-cancel-05.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/guide/example-cancel-05.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/guide/example-cancel-05.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/guide/example-cancel-06.kt b/core/kotlinx-coroutines-core/src/test/kotlin/guide/example-cancel-06.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/guide/example-cancel-06.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/guide/example-cancel-06.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/guide/example-channel-01.kt b/core/kotlinx-coroutines-core/src/test/kotlin/guide/example-channel-01.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/guide/example-channel-01.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/guide/example-channel-01.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/guide/example-channel-02.kt b/core/kotlinx-coroutines-core/src/test/kotlin/guide/example-channel-02.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/guide/example-channel-02.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/guide/example-channel-02.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/guide/example-channel-03.kt b/core/kotlinx-coroutines-core/src/test/kotlin/guide/example-channel-03.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/guide/example-channel-03.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/guide/example-channel-03.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/guide/example-channel-04.kt b/core/kotlinx-coroutines-core/src/test/kotlin/guide/example-channel-04.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/guide/example-channel-04.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/guide/example-channel-04.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/guide/example-channel-05.kt b/core/kotlinx-coroutines-core/src/test/kotlin/guide/example-channel-05.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/guide/example-channel-05.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/guide/example-channel-05.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/guide/example-channel-06.kt b/core/kotlinx-coroutines-core/src/test/kotlin/guide/example-channel-06.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/guide/example-channel-06.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/guide/example-channel-06.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/guide/example-channel-07.kt b/core/kotlinx-coroutines-core/src/test/kotlin/guide/example-channel-07.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/guide/example-channel-07.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/guide/example-channel-07.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/guide/example-channel-08.kt b/core/kotlinx-coroutines-core/src/test/kotlin/guide/example-channel-08.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/guide/example-channel-08.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/guide/example-channel-08.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/guide/example-channel-09.kt b/core/kotlinx-coroutines-core/src/test/kotlin/guide/example-channel-09.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/guide/example-channel-09.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/guide/example-channel-09.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/guide/example-compose-01.kt b/core/kotlinx-coroutines-core/src/test/kotlin/guide/example-compose-01.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/guide/example-compose-01.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/guide/example-compose-01.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/guide/example-compose-02.kt b/core/kotlinx-coroutines-core/src/test/kotlin/guide/example-compose-02.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/guide/example-compose-02.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/guide/example-compose-02.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/guide/example-compose-03.kt b/core/kotlinx-coroutines-core/src/test/kotlin/guide/example-compose-03.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/guide/example-compose-03.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/guide/example-compose-03.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/guide/example-compose-04.kt b/core/kotlinx-coroutines-core/src/test/kotlin/guide/example-compose-04.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/guide/example-compose-04.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/guide/example-compose-04.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/guide/example-context-01.kt b/core/kotlinx-coroutines-core/src/test/kotlin/guide/example-context-01.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/guide/example-context-01.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/guide/example-context-01.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/guide/example-context-02.kt b/core/kotlinx-coroutines-core/src/test/kotlin/guide/example-context-02.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/guide/example-context-02.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/guide/example-context-02.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/guide/example-context-03.kt b/core/kotlinx-coroutines-core/src/test/kotlin/guide/example-context-03.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/guide/example-context-03.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/guide/example-context-03.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/guide/example-context-04.kt b/core/kotlinx-coroutines-core/src/test/kotlin/guide/example-context-04.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/guide/example-context-04.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/guide/example-context-04.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/guide/example-context-05.kt b/core/kotlinx-coroutines-core/src/test/kotlin/guide/example-context-05.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/guide/example-context-05.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/guide/example-context-05.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/guide/example-context-06.kt b/core/kotlinx-coroutines-core/src/test/kotlin/guide/example-context-06.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/guide/example-context-06.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/guide/example-context-06.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/guide/example-context-07.kt b/core/kotlinx-coroutines-core/src/test/kotlin/guide/example-context-07.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/guide/example-context-07.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/guide/example-context-07.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/guide/example-context-08.kt b/core/kotlinx-coroutines-core/src/test/kotlin/guide/example-context-08.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/guide/example-context-08.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/guide/example-context-08.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/guide/example-context-09.kt b/core/kotlinx-coroutines-core/src/test/kotlin/guide/example-context-09.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/guide/example-context-09.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/guide/example-context-09.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/guide/example-select-01.kt b/core/kotlinx-coroutines-core/src/test/kotlin/guide/example-select-01.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/guide/example-select-01.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/guide/example-select-01.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/guide/example-select-02.kt b/core/kotlinx-coroutines-core/src/test/kotlin/guide/example-select-02.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/guide/example-select-02.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/guide/example-select-02.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/guide/example-select-03.kt b/core/kotlinx-coroutines-core/src/test/kotlin/guide/example-select-03.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/guide/example-select-03.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/guide/example-select-03.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/guide/example-select-04.kt b/core/kotlinx-coroutines-core/src/test/kotlin/guide/example-select-04.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/guide/example-select-04.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/guide/example-select-04.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/guide/example-select-05.kt b/core/kotlinx-coroutines-core/src/test/kotlin/guide/example-select-05.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/guide/example-select-05.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/guide/example-select-05.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/guide/example-sync-01.kt b/core/kotlinx-coroutines-core/src/test/kotlin/guide/example-sync-01.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/guide/example-sync-01.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/guide/example-sync-01.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/guide/example-sync-01b.kt b/core/kotlinx-coroutines-core/src/test/kotlin/guide/example-sync-01b.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/guide/example-sync-01b.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/guide/example-sync-01b.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/guide/example-sync-02.kt b/core/kotlinx-coroutines-core/src/test/kotlin/guide/example-sync-02.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/guide/example-sync-02.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/guide/example-sync-02.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/guide/example-sync-03.kt b/core/kotlinx-coroutines-core/src/test/kotlin/guide/example-sync-03.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/guide/example-sync-03.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/guide/example-sync-03.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/guide/example-sync-04.kt b/core/kotlinx-coroutines-core/src/test/kotlin/guide/example-sync-04.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/guide/example-sync-04.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/guide/example-sync-04.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/guide/example-sync-05.kt b/core/kotlinx-coroutines-core/src/test/kotlin/guide/example-sync-05.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/guide/example-sync-05.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/guide/example-sync-05.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/guide/example-sync-06.kt b/core/kotlinx-coroutines-core/src/test/kotlin/guide/example-sync-06.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/guide/example-sync-06.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/guide/example-sync-06.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/guide/example-sync-07.kt b/core/kotlinx-coroutines-core/src/test/kotlin/guide/example-sync-07.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/guide/example-sync-07.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/guide/example-sync-07.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/guide/test/GuideTest.kt b/core/kotlinx-coroutines-core/src/test/kotlin/guide/test/GuideTest.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/guide/test/GuideTest.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/guide/test/GuideTest.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/guide/test/TestUtil.kt b/core/kotlinx-coroutines-core/src/test/kotlin/guide/test/TestUtil.kt
similarity index 90%
rename from kotlinx-coroutines-core/src/test/kotlin/guide/test/TestUtil.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/guide/test/TestUtil.kt
index 01c1d20..40a2249 100644
--- a/kotlinx-coroutines-core/src/test/kotlin/guide/test/TestUtil.kt
+++ b/core/kotlinx-coroutines-core/src/test/kotlin/guide/test/TestUtil.kt
@@ -27,11 +27,12 @@
 import java.util.concurrent.TimeUnit
 import java.util.concurrent.locks.LockSupport
 
+private const val WAIT_LOST_THREADS = 10_000L // 10s
 private val ignoreLostThreads = mutableSetOf<String>()
 
 fun ignoreLostThreads(vararg s: String) { ignoreLostThreads += s }
 
-fun threadNames(): Set<String> {
+fun currentThreads(): Set<Thread> {
     var estimate = 0
     while (true) {
         estimate = estimate.coerceAtLeast(Thread.activeCount() + 1)
@@ -41,33 +42,37 @@
             estimate = n + 1
             continue // retry with a better size estimate
         }
-        val names = hashSetOf<String>()
+        val threads = hashSetOf<Thread>()
         for (i in 0 until n)
-            names.add(sanitizeThreadName(arrayOfThreads[i]!!.name))
-        return names
+            threads.add(arrayOfThreads[i]!!)
+        return threads
     }
 }
 
-// remove coroutine names from thread in case we have lost threads with coroutines running in them
-private fun sanitizeThreadName(name: String): String {
-    val i = name.indexOf(" @")
-    return if (i < 0) name else name.substring(0, i)
-}
-
-fun checkTestThreads(threadNamesBefore: Set<String>) {
+fun checkTestThreads(threadsBefore: Set<Thread>) {
     // give threads some time to shutdown
-    val waitTill = System.currentTimeMillis() + 1000L
-    var diff: List<String>
+    val waitTill = System.currentTimeMillis() + WAIT_LOST_THREADS
+    var diff: List<Thread>
     do {
-        val threadNamesAfter = threadNames()
-        diff = (threadNamesAfter - threadNamesBefore).filter { name ->
-            ignoreLostThreads.none { prefix -> name.startsWith(prefix) }
+        val threadsAfter = currentThreads()
+        diff = (threadsAfter - threadsBefore).filter { thread ->
+            ignoreLostThreads.none { prefix -> thread.name.startsWith(prefix) }
         }
         if (diff.isEmpty()) break
     } while (System.currentTimeMillis() <= waitTill)
     ignoreLostThreads.clear()
-    diff.forEach { println("Lost thread '$it'") }
-    check(diff.isEmpty()) { "Lost ${diff.size} threads" }
+    if (diff.isEmpty()) return
+    val message = "Lost threads ${diff.map { it.name }}"
+    println("!!! $message")
+    println("=== Dumping lost thread stack traces")
+    diff.forEach { thread ->
+        println("Thread \"${thread.name}\" ${thread.state}")
+        val trace = thread.stackTrace
+        for (t in trace) println("\tat ${t.className}.${t.methodName}(${t.fileName}:${t.lineNumber})")
+        println()
+    }
+    println("===")
+    error(message)
 }
 
 fun trackTask(block: Runnable) = timeSource.trackTask(block)
@@ -96,7 +101,7 @@
     resetCoroutineId()
     // shutdown execution with old time source (in case it was working)
     DefaultExecutor.shutdown(SHUTDOWN_TIMEOUT)
-    val threadNamesBefore = threadNames()
+    val threadsBefore = currentThreads()
     val testTimeSource = TestTimeSource(oldOut)
     timeSource = testTimeSource
     DefaultExecutor.ensureStarted() // should start with new time source
@@ -121,7 +126,7 @@
         oldOut.println("--- done")
         System.setOut(oldOut)
         System.setErr(oldErr)
-        checkTestThreads(threadNamesBefore)
+        checkTestThreads(threadsBefore)
     }
     return ByteArrayInputStream(bytes).bufferedReader().readLines()
 }
diff --git a/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/AsyncLazyTest.kt b/core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/AsyncLazyTest.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/AsyncLazyTest.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/AsyncLazyTest.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/AsyncTest.kt b/core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/AsyncTest.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/AsyncTest.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/AsyncTest.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/AtomicCancellationTest.kt b/core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/AtomicCancellationTest.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/AtomicCancellationTest.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/AtomicCancellationTest.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/CompletableDeferredTest.kt b/core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/CompletableDeferredTest.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/CompletableDeferredTest.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/CompletableDeferredTest.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/CoroutineExceptionHandlerTest.kt b/core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/CoroutineExceptionHandlerTest.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/CoroutineExceptionHandlerTest.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/CoroutineExceptionHandlerTest.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/CoroutinesTest.kt b/core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/CoroutinesTest.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/CoroutinesTest.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/CoroutinesTest.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/ExecutorsTest.kt b/core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/ExecutorsTest.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/ExecutorsTest.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/ExecutorsTest.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/JobDisposeTest.kt b/core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/JobDisposeTest.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/JobDisposeTest.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/JobDisposeTest.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/JobTest.kt b/core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/JobTest.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/JobTest.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/JobTest.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/LaunchLazyTest.kt b/core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/LaunchLazyTest.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/LaunchLazyTest.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/LaunchLazyTest.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/RunTest.kt b/core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/RunTest.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/RunTest.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/RunTest.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/TestBase.kt b/core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/TestBase.kt
similarity index 94%
rename from kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/TestBase.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/TestBase.kt
index ed38b15..f4cd14a 100644
--- a/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/TestBase.kt
+++ b/core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/TestBase.kt
@@ -17,7 +17,7 @@
 package kotlinx.coroutines.experimental
 
 import guide.test.checkTestThreads
-import guide.test.threadNames
+import guide.test.currentThreads
 import org.junit.After
 import org.junit.Before
 import java.util.concurrent.atomic.AtomicBoolean
@@ -99,13 +99,13 @@
         check(!finished.getAndSet(true)) { "Should call 'finish(...)' at most once" }
     }
 
-    private lateinit var threadNamesBefore: Set<String>
-    private val SHUTDOWN_TIMEOUT = 5000L // 5 sec at most to wait
+    private lateinit var threadsBefore: Set<Thread>
+    private val SHUTDOWN_TIMEOUT = 10_000L // 10s at most to wait
 
     @Before
     fun before() {
         CommonPool.usePrivatePool()
-        threadNamesBefore = threadNames()
+        threadsBefore = currentThreads()
     }
 
     @After
@@ -114,6 +114,6 @@
         check(actionIndex.get() == 0 || finished.get()) { "Expecting that 'finish(...)' was invoked, but it was not" }
         CommonPool.shutdown(SHUTDOWN_TIMEOUT)
         DefaultExecutor.shutdown(SHUTDOWN_TIMEOUT)
-        checkTestThreads(threadNamesBefore)
+        checkTestThreads(threadsBefore)
     }
 }
\ No newline at end of file
diff --git a/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/TestSecurityManager.kt b/core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/TestSecurityManager.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/TestSecurityManager.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/TestSecurityManager.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/Try.kt b/core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/Try.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/Try.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/Try.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/WithTimeoutOrNullTest.kt b/core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/WithTimeoutOrNullTest.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/WithTimeoutOrNullTest.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/WithTimeoutOrNullTest.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/WithTimeoutOrNullThreadDispatchTest.kt b/core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/WithTimeoutOrNullThreadDispatchTest.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/WithTimeoutOrNullThreadDispatchTest.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/WithTimeoutOrNullThreadDispatchTest.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/WithTimeoutTest.kt b/core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/WithTimeoutTest.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/WithTimeoutTest.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/WithTimeoutTest.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/WithTimeoutThreadDispatchTest.kt b/core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/WithTimeoutThreadDispatchTest.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/WithTimeoutThreadDispatchTest.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/WithTimeoutThreadDispatchTest.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/channels/ActorLazyTest.kt b/core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/channels/ActorLazyTest.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/channels/ActorLazyTest.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/channels/ActorLazyTest.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/channels/ActorTest.kt b/core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/channels/ActorTest.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/channels/ActorTest.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/channels/ActorTest.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/channels/ArrayBroadcastChannelTest.kt b/core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/channels/ArrayBroadcastChannelTest.kt
similarity index 81%
rename from kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/channels/ArrayBroadcastChannelTest.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/channels/ArrayBroadcastChannelTest.kt
index 8eca6e4..f3c1ab1 100644
--- a/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/channels/ArrayBroadcastChannelTest.kt
+++ b/core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/channels/ArrayBroadcastChannelTest.kt
@@ -132,4 +132,38 @@
         yield()
         finish(6)
     }
+
+    @Test
+    fun testReceiveFullAfterClose() = runBlocking<Unit> {
+        val channel = BroadcastChannel<Int>(10)
+        val sub = channel.openSubscription()
+        // generate into buffer & close
+        for (x in 1..5) channel.send(x)
+        channel.close()
+        // make sure all of them are consumed
+        check(!sub.isClosedForReceive)
+        for (x in 1..5) check(sub.receive() == x)
+        check(sub.receiveOrNull() == null)
+        check(sub.isClosedForReceive)
+    }
+
+    @Test
+    fun testCloseSubDuringIteration() = runBlocking<Unit> {
+        val channel = BroadcastChannel<Int>(1)
+        // launch generator (for later) in this context
+        launch(coroutineContext) {
+            for (x in 1..5) channel.send(x)
+            channel.close()
+        }
+        // start consuming
+        val sub = channel.openSubscription()
+        var expected = 0
+        sub.consumeEach {
+            check(it == ++expected)
+            if (it == 2) {
+                sub.close()
+            }
+        }
+        check(expected == 2)
+    }
 }
\ No newline at end of file
diff --git a/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/channels/ArrayChannelTest.kt b/core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/channels/ArrayChannelTest.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/channels/ArrayChannelTest.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/channels/ArrayChannelTest.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/channels/BroadcastChannelFactoryTest.kt b/core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/channels/BroadcastChannelFactoryTest.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/channels/BroadcastChannelFactoryTest.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/channels/BroadcastChannelFactoryTest.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/channels/ChannelAtomicCancelStressTest.kt b/core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/channels/ChannelAtomicCancelStressTest.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/channels/ChannelAtomicCancelStressTest.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/channels/ChannelAtomicCancelStressTest.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/channels/ChannelFactoryTest.kt b/core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/channels/ChannelFactoryTest.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/channels/ChannelFactoryTest.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/channels/ChannelFactoryTest.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/channels/ChannelSendReceiveStressTest.kt b/core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/channels/ChannelSendReceiveStressTest.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/channels/ChannelSendReceiveStressTest.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/channels/ChannelSendReceiveStressTest.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/channels/ConflatedBroadcastChannelNotifyStressTest.kt b/core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/channels/ConflatedBroadcastChannelNotifyStressTest.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/channels/ConflatedBroadcastChannelNotifyStressTest.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/channels/ConflatedBroadcastChannelNotifyStressTest.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/channels/ConflatedBroadcastChannelTest.kt b/core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/channels/ConflatedBroadcastChannelTest.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/channels/ConflatedBroadcastChannelTest.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/channels/ConflatedBroadcastChannelTest.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/channels/ConflatedChannelCloseStressTest.kt b/core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/channels/ConflatedChannelCloseStressTest.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/channels/ConflatedChannelCloseStressTest.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/channels/ConflatedChannelCloseStressTest.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/channels/ConflatedChannelTest.kt b/core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/channels/ConflatedChannelTest.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/channels/ConflatedChannelTest.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/channels/ConflatedChannelTest.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/channels/DoubleChannelCloseStressTest.kt b/core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/channels/DoubleChannelCloseStressTest.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/channels/DoubleChannelCloseStressTest.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/channels/DoubleChannelCloseStressTest.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/channels/LinkedListChannelTest.kt b/core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/channels/LinkedListChannelTest.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/channels/LinkedListChannelTest.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/channels/LinkedListChannelTest.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/channels/RendezvousChannelTest.kt b/core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/channels/RendezvousChannelTest.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/channels/RendezvousChannelTest.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/channels/RendezvousChannelTest.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/channels/SimpleSendReceiveTest.kt b/core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/channels/SimpleSendReceiveTest.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/channels/SimpleSendReceiveTest.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/channels/SimpleSendReceiveTest.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/channels/TestChannelKind.kt b/core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/channels/TestChannelKind.kt
similarity index 88%
rename from kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/channels/TestChannelKind.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/channels/TestChannelKind.kt
index f940c1b..f0b55c2 100644
--- a/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/channels/TestChannelKind.kt
+++ b/core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/channels/TestChannelKind.kt
@@ -16,7 +16,7 @@
 
 package kotlinx.coroutines.experimental.channels
 
-import kotlinx.coroutines.experimental.selects.SelectInstance
+import kotlinx.coroutines.experimental.selects.SelectClause1
 
 enum class TestChannelKind {
     RENDEZVOUS {
@@ -70,8 +70,8 @@
     suspend override fun receiveOrNull(): E? = sub.receiveOrNull()
     override fun poll(): E? = sub.poll()
     override fun iterator(): ChannelIterator<E> = sub.iterator()
-    override fun <R> registerSelectReceive(select: SelectInstance<R>, block: suspend (E) -> R) =
-        sub.registerSelectReceive(select, block)
-    override fun <R> registerSelectReceiveOrNull(select: SelectInstance<R>, block: suspend (E?) -> R) =
-        sub.registerSelectReceiveOrNull(select, block)
+    override val onReceive: SelectClause1<E>
+        get() = sub.onReceive
+    override val onReceiveOrNull: SelectClause1<E?>
+        get() = sub.onReceiveOrNull
 }
diff --git a/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/internal/LockFreeLinkedListAtomicStressLFTest.kt b/core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/internal/LockFreeLinkedListAtomicStressLFTest.kt
similarity index 67%
rename from kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/internal/LockFreeLinkedListAtomicStressLFTest.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/internal/LockFreeLinkedListAtomicStressLFTest.kt
index 171c253..24dfd23 100644
--- a/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/internal/LockFreeLinkedListAtomicStressLFTest.kt
+++ b/core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/internal/LockFreeLinkedListAtomicStressLFTest.kt
@@ -55,23 +55,23 @@
                     0 -> {
                         val list = lists[rnd.nextInt(nLists)]
                         val node = IntNode(threadId)
-                        list.addLast(node)
+                        addLastOp(list, node)
                         randomSpinWaitIntermission()
-                        tryRemove(node)
+                        tryRemoveOp(node)
                     }
                     1 -> {
                         // just to test conditional add
                         val list = lists[rnd.nextInt(nLists)]
                         val node = IntNode(threadId)
-                        assertTrue(list.addLastIf(node, { true }))
+                        addLastIfTrueOp(list, node)
                         randomSpinWaitIntermission()
-                        tryRemove(node)
+                        tryRemoveOp(node)
                     }
                     2 -> {
                         // just to test failed conditional add and burn some time
                         val list = lists[rnd.nextInt(nLists)]
                         val node = IntNode(threadId)
-                        assertFalse(list.addLastIf(node, { false }))
+                        addLastIfFalseOp(list, node)
                     }
                     3 -> {
                         // add two atomically
@@ -82,22 +82,11 @@
                         val list2 = lists[idx2]
                         val node1 = IntNode(threadId)
                         val node2 = IntNode(-threadId - 1)
-                        val add1 = list1.describeAddLast(node1)
-                        val add2 = list2.describeAddLast(node2)
-                        val op = object : AtomicOp<Any?>() {
-                            override fun prepare(affected: Any?): Any? =
-                                add1.prepare(this) ?:
-                                add2.prepare(this)
-                            override fun complete(affected: Any?, failure: Any?) {
-                                add1.complete(this, failure)
-                                add2.complete(this, failure)
-                            }
-                        }
-                        assertTrue(op.perform(null) == null)
+                        addTwoOp(list1, node1, list2, node2)
                         randomSpinWaitIntermission()
-                        tryRemove(node1)
+                        tryRemoveOp(node1)
                         randomSpinWaitIntermission()
-                        tryRemove(node2)
+                        tryRemoveOp(node2)
                     }
                     else -> error("Cannot happen")
                 }
@@ -111,19 +100,7 @@
                 check(idx1 < idx2) // that is our global order
                 val list1 = lists[idx1]
                 val list2 = lists[idx2]
-                val remove1 = list1.describeRemoveFirst()
-                val remove2 = list2.describeRemoveFirst()
-                val op = object : AtomicOp<Any?>() {
-                    override fun prepare(affected: Any?): Any? =
-                        remove1.prepare(this) ?:
-                        remove2.prepare(this)
-                    override fun complete(affected: Any?, failure: Any?) {
-                        remove1.complete(this, failure)
-                        remove2.complete(this, failure)
-                    }
-                }
-                val success = op.perform(null) == null
-                if (success) removed.addAndGet(2)
+                removeTwoOp(list1, list2)
             }
         }
         env.performTest(TEST_DURATION_SEC) {
@@ -141,10 +118,56 @@
         lists.forEach { it.validate() }
     }
 
-    private fun tryRemove(node: IntNode) {
+    private fun addLastOp(list: LockFreeLinkedListHead, node: IntNode) {
+        list.addLast(node)
+    }
+
+    private fun addLastIfTrueOp(list: LockFreeLinkedListHead, node: IntNode) {
+        assertTrue(list.addLastIf(node, { true }))
+    }
+
+    private fun addLastIfFalseOp(list: LockFreeLinkedListHead, node: IntNode) {
+        assertFalse(list.addLastIf(node, { false }))
+    }
+
+    private fun addTwoOp(list1: LockFreeLinkedListHead, node1: IntNode, list2: LockFreeLinkedListHead, node2: IntNode) {
+        val add1 = list1.describeAddLast(node1)
+        val add2 = list2.describeAddLast(node2)
+        val op = object : AtomicOp<Any?>() {
+            override fun prepare(affected: Any?): Any? =
+                add1.prepare(this) ?:
+                    add2.prepare(this)
+
+            override fun complete(affected: Any?, failure: Any?) {
+                add1.complete(this, failure)
+                add2.complete(this, failure)
+            }
+        }
+        assertTrue(op.perform(null) == null)
+    }
+
+    private fun tryRemoveOp(node: IntNode) {
         if (node.remove())
             undone.incrementAndGet()
         else
             missed.incrementAndGet()
     }
+
+    private fun removeTwoOp(list1: LockFreeLinkedListHead, list2: LockFreeLinkedListHead) {
+        val remove1 = list1.describeRemoveFirst()
+        val remove2 = list2.describeRemoveFirst()
+        val op = object : AtomicOp<Any?>() {
+            override fun prepare(affected: Any?): Any? =
+                remove1.prepare(this) ?:
+                    remove2.prepare(this)
+
+            override fun complete(affected: Any?, failure: Any?) {
+                remove1.complete(this, failure)
+                remove2.complete(this, failure)
+            }
+        }
+        val success = op.perform(null) == null
+        if (success) removed.addAndGet(2)
+    }
+
 }
\ No newline at end of file
diff --git a/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/internal/LockFreeLinkedListLongStressTest.kt b/core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/internal/LockFreeLinkedListLongStressTest.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/internal/LockFreeLinkedListLongStressTest.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/internal/LockFreeLinkedListLongStressTest.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/internal/LockFreeLinkedListShortStressTest.kt b/core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/internal/LockFreeLinkedListShortStressTest.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/internal/LockFreeLinkedListShortStressTest.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/internal/LockFreeLinkedListShortStressTest.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/internal/LockFreeLinkedListTest.kt b/core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/internal/LockFreeLinkedListTest.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/internal/LockFreeLinkedListTest.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/internal/LockFreeLinkedListTest.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/internal/LockFreeListLinearizabilityTest.kt b/core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/internal/LockFreeListLinearizabilityTest.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/internal/LockFreeListLinearizabilityTest.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/internal/LockFreeListLinearizabilityTest.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/internal/ThreadSafeHeapTest.kt b/core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/internal/ThreadSafeHeapTest.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/internal/ThreadSafeHeapTest.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/internal/ThreadSafeHeapTest.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/selects/SelectArrayChannelTest.kt b/core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/selects/SelectArrayChannelTest.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/selects/SelectArrayChannelTest.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/selects/SelectArrayChannelTest.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/selects/SelectBiasTest.kt b/core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/selects/SelectBiasTest.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/selects/SelectBiasTest.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/selects/SelectBiasTest.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/selects/SelectBuilderImplTest.kt b/core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/selects/SelectBuilderImplTest.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/selects/SelectBuilderImplTest.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/selects/SelectBuilderImplTest.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/selects/SelectDeferredTest.kt b/core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/selects/SelectDeferredTest.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/selects/SelectDeferredTest.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/selects/SelectDeferredTest.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/selects/SelectJobTest.kt b/core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/selects/SelectJobTest.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/selects/SelectJobTest.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/selects/SelectJobTest.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/selects/SelectMutexTest.kt b/core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/selects/SelectMutexTest.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/selects/SelectMutexTest.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/selects/SelectMutexTest.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/selects/SelectPhilosophersStressTest.kt b/core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/selects/SelectPhilosophersStressTest.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/selects/SelectPhilosophersStressTest.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/selects/SelectPhilosophersStressTest.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/selects/SelectRendezvousChannelTest.kt b/core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/selects/SelectRendezvousChannelTest.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/selects/SelectRendezvousChannelTest.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/selects/SelectRendezvousChannelTest.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/selects/SelectTimeoutTest.kt b/core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/selects/SelectTimeoutTest.kt
similarity index 100%
rename from kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/selects/SelectTimeoutTest.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/selects/SelectTimeoutTest.kt
diff --git a/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/sync/MutexTest.kt b/core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/sync/MutexTest.kt
similarity index 77%
rename from kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/sync/MutexTest.kt
rename to core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/sync/MutexTest.kt
index 94f47ba..4a3fd32 100644
--- a/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/sync/MutexTest.kt
+++ b/core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/sync/MutexTest.kt
@@ -107,4 +107,37 @@
         mutex.unlock() // should not produce StackOverflowError
         assertThat(done, IsEqual(waiters))
     }
+
+    @Test
+    fun holdLock() = runBlocking {
+        val mutex = Mutex()
+        val firstOwner = Any()
+        val secondOwner = Any()
+
+        // no lock
+        assertFalse(mutex.holdsLock(firstOwner))
+        assertFalse(mutex.holdsLock(secondOwner))
+
+        // owner firstOwner
+        mutex.lock(firstOwner)
+        val secondLockJob = launch(CommonPool) {
+            mutex.lock(secondOwner)
+        }
+
+        assertTrue(mutex.holdsLock(firstOwner))
+        assertFalse(mutex.holdsLock(secondOwner))
+
+        // owner secondOwner
+        mutex.unlock(firstOwner)
+        secondLockJob.join()
+
+        assertFalse(mutex.holdsLock(firstOwner))
+        assertTrue(mutex.holdsLock(secondOwner))
+
+        mutex.unlock(secondOwner)
+
+        // no lock
+        assertFalse(mutex.holdsLock(firstOwner))
+        assertFalse(mutex.holdsLock(secondOwner))
+    }
 }
\ No newline at end of file
diff --git a/coroutines-guide.md b/coroutines-guide.md
index 4681f88..de13798 100644
--- a/coroutines-guide.md
+++ b/coroutines-guide.md
@@ -20,8 +20,8 @@
 
 import kotlinx.coroutines.experimental.*
 -->
-<!--- KNIT     kotlinx-coroutines-core/src/test/kotlin/guide/.*\.kt -->
-<!--- TEST_OUT kotlinx-coroutines-core/src/test/kotlin/guide/test/GuideTest.kt
+<!--- KNIT     core/kotlinx-coroutines-core/src/test/kotlin/guide/.*\.kt -->
+<!--- TEST_OUT core/kotlinx-coroutines-core/src/test/kotlin/guide/test/GuideTest.kt
 // This file was automatically generated from coroutines-guide.md by Knit tool. Do not edit.
 package guide.test
 
@@ -125,7 +125,7 @@
 }
 ```
 
-> You can get full code [here](kotlinx-coroutines-core/src/test/kotlin/guide/example-basic-01.kt)
+> You can get full code [here](core/kotlinx-coroutines-core/src/test/kotlin/guide/example-basic-01.kt)
 
 Run this code:
 
@@ -167,7 +167,7 @@
 }
 ```
 
-> You can get full code [here](kotlinx-coroutines-core/src/test/kotlin/guide/example-basic-02.kt)
+> You can get full code [here](core/kotlinx-coroutines-core/src/test/kotlin/guide/example-basic-02.kt)
 
 <!--- TEST
 Hello,
@@ -208,7 +208,7 @@
 }
 ```
 
-> You can get full code [here](kotlinx-coroutines-core/src/test/kotlin/guide/example-basic-03.kt)
+> You can get full code [here](core/kotlinx-coroutines-core/src/test/kotlin/guide/example-basic-03.kt)
 
 <!--- TEST
 Hello,
@@ -240,7 +240,7 @@
 }
 ```
 
-> You can get full code [here](kotlinx-coroutines-core/src/test/kotlin/guide/example-basic-04.kt)
+> You can get full code [here](core/kotlinx-coroutines-core/src/test/kotlin/guide/example-basic-04.kt)
 
 <!--- TEST
 Hello,
@@ -263,7 +263,7 @@
 }
 ```
 
-> You can get full code [here](kotlinx-coroutines-core/src/test/kotlin/guide/example-basic-05.kt)
+> You can get full code [here](core/kotlinx-coroutines-core/src/test/kotlin/guide/example-basic-05.kt)
 
 <!--- TEST lines.size == 1 && lines[0] == ".".repeat(100_000) -->
 
@@ -287,7 +287,7 @@
 }
 ```
 
-> You can get full code [here](kotlinx-coroutines-core/src/test/kotlin/guide/example-basic-06.kt)
+> You can get full code [here](core/kotlinx-coroutines-core/src/test/kotlin/guide/example-basic-06.kt)
 
 You can run and see that it prints three lines and terminates:
 
@@ -327,7 +327,7 @@
 }
 ``` 
 
-> You can get full code [here](kotlinx-coroutines-core/src/test/kotlin/guide/example-cancel-01.kt)
+> You can get full code [here](core/kotlinx-coroutines-core/src/test/kotlin/guide/example-cancel-01.kt)
 
 It produces the following output:
 
@@ -373,7 +373,7 @@
 }
 ```
 
-> You can get full code [here](kotlinx-coroutines-core/src/test/kotlin/guide/example-cancel-02.kt)
+> You can get full code [here](core/kotlinx-coroutines-core/src/test/kotlin/guide/example-cancel-02.kt)
 
 Run it to see that it continues to print "I'm sleeping" even after cancellation.
 
@@ -418,7 +418,7 @@
 }
 ```
 
-> You can get full code [here](kotlinx-coroutines-core/src/test/kotlin/guide/example-cancel-03.kt)
+> You can get full code [here](core/kotlinx-coroutines-core/src/test/kotlin/guide/example-cancel-03.kt)
 
 As you can see, now this loop can be cancelled. [isActive][CoroutineScope.isActive] is a property that is available inside
 the code of coroutines via [CoroutineScope] object.
@@ -457,7 +457,7 @@
 }
 ``` 
 
-> You can get full code [here](kotlinx-coroutines-core/src/test/kotlin/guide/example-cancel-04.kt)
+> You can get full code [here](core/kotlinx-coroutines-core/src/test/kotlin/guide/example-cancel-04.kt)
 
 The example above produces the following output:
 
@@ -505,7 +505,7 @@
 }
 ``` 
 
-> You can get full code [here](kotlinx-coroutines-core/src/test/kotlin/guide/example-cancel-05.kt)
+> You can get full code [here](core/kotlinx-coroutines-core/src/test/kotlin/guide/example-cancel-05.kt)
 
 <!--- TEST
 I'm sleeping 0 ...
@@ -536,7 +536,7 @@
 }
 ```
 
-> You can get full code [here](kotlinx-coroutines-core/src/test/kotlin/guide/example-cancel-06.kt)
+> You can get full code [here](core/kotlinx-coroutines-core/src/test/kotlin/guide/example-cancel-06.kt)
 
 It produces the following output:
 
@@ -606,7 +606,7 @@
 }
 ```
 
-> You can get full code [here](kotlinx-coroutines-core/src/test/kotlin/guide/example-compose-01.kt)
+> You can get full code [here](core/kotlinx-coroutines-core/src/test/kotlin/guide/example-compose-01.kt)
 
 It produces something like this:
 
@@ -639,7 +639,7 @@
 }
 ```
 
-> You can get full code [here](kotlinx-coroutines-core/src/test/kotlin/guide/example-compose-02.kt)
+> You can get full code [here](core/kotlinx-coroutines-core/src/test/kotlin/guide/example-compose-02.kt)
 
 It produces something like this:
 
@@ -671,7 +671,7 @@
 }
 ```
 
-> You can get full code [here](kotlinx-coroutines-core/src/test/kotlin/guide/example-compose-03.kt)
+> You can get full code [here](core/kotlinx-coroutines-core/src/test/kotlin/guide/example-compose-03.kt)
 
 It produces something like this:
 
@@ -728,7 +728,7 @@
 }
 ```
 
-> You can get full code [here](kotlinx-coroutines-core/src/test/kotlin/guide/example-compose-04.kt)
+> You can get full code [here](core/kotlinx-coroutines-core/src/test/kotlin/guide/example-compose-04.kt)
 
 <!--- TEST ARBITRARY_TIME
 The answer is 42
@@ -766,7 +766,7 @@
 }
 ```
 
-> You can get full code [here](kotlinx-coroutines-core/src/test/kotlin/guide/example-context-01.kt)
+> You can get full code [here](core/kotlinx-coroutines-core/src/test/kotlin/guide/example-context-01.kt)
 
 It produces the following output (maybe in different order):
 
@@ -812,7 +812,7 @@
 }
 ```
 
-> You can get full code [here](kotlinx-coroutines-core/src/test/kotlin/guide/example-context-02.kt)
+> You can get full code [here](core/kotlinx-coroutines-core/src/test/kotlin/guide/example-context-02.kt)
 
 Produces the output: 
  
@@ -856,7 +856,7 @@
 }
 ```
 
-> You can get full code [here](kotlinx-coroutines-core/src/test/kotlin/guide/example-context-03.kt)
+> You can get full code [here](core/kotlinx-coroutines-core/src/test/kotlin/guide/example-context-03.kt)
 
 There are three coroutines. The main coroutine (#1) -- `runBlocking` one, 
 and two coroutines computing deferred values `a` (#2) and `b` (#3).
@@ -897,7 +897,7 @@
 }
 ```
 
-> You can get full code [here](kotlinx-coroutines-core/src/test/kotlin/guide/example-context-04.kt)
+> You can get full code [here](core/kotlinx-coroutines-core/src/test/kotlin/guide/example-context-04.kt)
 
 It demonstrates two new techniques. One is using [runBlocking] with an explicitly specified context, and
 the second one is using [run] function to change a context of a coroutine while still staying in the 
@@ -922,7 +922,7 @@
 }
 ```
 
-> You can get full code [here](kotlinx-coroutines-core/src/test/kotlin/guide/example-context-05.kt)
+> You can get full code [here](core/kotlinx-coroutines-core/src/test/kotlin/guide/example-context-05.kt)
 
 It produces something like
 
@@ -969,7 +969,7 @@
 }
 ```
 
-> You can get full code [here](kotlinx-coroutines-core/src/test/kotlin/guide/example-context-06.kt)
+> You can get full code [here](core/kotlinx-coroutines-core/src/test/kotlin/guide/example-context-06.kt)
 
 The output of this code is:
 
@@ -1007,7 +1007,7 @@
 }
 ```
 
-> You can get full code [here](kotlinx-coroutines-core/src/test/kotlin/guide/example-context-07.kt)
+> You can get full code [here](core/kotlinx-coroutines-core/src/test/kotlin/guide/example-context-07.kt)
 
 The expected outcome of this code is: 
 
@@ -1048,7 +1048,7 @@
 }
 ```
 
-> You can get full code [here](kotlinx-coroutines-core/src/test/kotlin/guide/example-context-08.kt)
+> You can get full code [here](core/kotlinx-coroutines-core/src/test/kotlin/guide/example-context-08.kt)
 
 The output it produces with `-Dkotlinx.coroutines.debug` JVM option is similar to:
  
@@ -1093,7 +1093,7 @@
 }
 ```
 
-> You can get full code [here](kotlinx-coroutines-core/src/test/kotlin/guide/example-context-09.kt)
+> You can get full code [here](core/kotlinx-coroutines-core/src/test/kotlin/guide/example-context-09.kt)
 
 The output of this example is:
 
@@ -1140,7 +1140,7 @@
 }
 ```
 
-> You can get full code [here](kotlinx-coroutines-core/src/test/kotlin/guide/example-channel-01.kt)
+> You can get full code [here](core/kotlinx-coroutines-core/src/test/kotlin/guide/example-channel-01.kt)
 
 The output of this code is:
 
@@ -1178,7 +1178,7 @@
 }
 ```
 
-> You can get full code [here](kotlinx-coroutines-core/src/test/kotlin/guide/example-channel-02.kt)
+> You can get full code [here](core/kotlinx-coroutines-core/src/test/kotlin/guide/example-channel-02.kt)
 
 <!--- TEST 
 1
@@ -1211,7 +1211,7 @@
 }
 ```
 
-> You can get full code [here](kotlinx-coroutines-core/src/test/kotlin/guide/example-channel-03.kt)
+> You can get full code [here](core/kotlinx-coroutines-core/src/test/kotlin/guide/example-channel-03.kt)
 
 <!--- TEST 
 1
@@ -1255,7 +1255,7 @@
 }
 ```
 
-> You can get full code [here](kotlinx-coroutines-core/src/test/kotlin/guide/example-channel-04.kt)
+> You can get full code [here](core/kotlinx-coroutines-core/src/test/kotlin/guide/example-channel-04.kt)
 
 <!--- TEST 
 1
@@ -1278,7 +1278,7 @@
 of coroutines. We start with an infinite sequence of numbers. This time we introduce an 
 explicit context parameter, so that caller can control where our coroutines run:
  
-<!--- INCLUDE kotlinx-coroutines-core/src/test/kotlin/guide/example-channel-05.kt  
+<!--- INCLUDE core/kotlinx-coroutines-core/src/test/kotlin/guide/example-channel-05.kt  
 import kotlin.coroutines.experimental.CoroutineContext
 -->
  
@@ -1319,7 +1319,7 @@
 }
 ```
 
-> You can get full code [here](kotlinx-coroutines-core/src/test/kotlin/guide/example-channel-05.kt)
+> You can get full code [here](core/kotlinx-coroutines-core/src/test/kotlin/guide/example-channel-05.kt)
 
 The output of this code is:
 
@@ -1387,7 +1387,7 @@
 }
 ```
 
-> You can get full code [here](kotlinx-coroutines-core/src/test/kotlin/guide/example-channel-06.kt)
+> You can get full code [here](core/kotlinx-coroutines-core/src/test/kotlin/guide/example-channel-06.kt)
 
 The output will be similar to the the following one, albeit the processor ids that receive
 each specific integer may be different:
@@ -1439,7 +1439,7 @@
 }
 ```
 
-> You can get full code [here](kotlinx-coroutines-core/src/test/kotlin/guide/example-channel-07.kt)
+> You can get full code [here](core/kotlinx-coroutines-core/src/test/kotlin/guide/example-channel-07.kt)
 
 The output is:
 
@@ -1480,7 +1480,7 @@
 }
 ```
 
-> You can get full code [here](kotlinx-coroutines-core/src/test/kotlin/guide/example-channel-08.kt)
+> You can get full code [here](core/kotlinx-coroutines-core/src/test/kotlin/guide/example-channel-08.kt)
 
 It prints "sending" _five_ times using a buffered channel with capacity of _four_:
 
@@ -1526,7 +1526,7 @@
 }
 ```
 
-> You can get full code [here](kotlinx-coroutines-core/src/test/kotlin/guide/example-channel-09.kt)
+> You can get full code [here](core/kotlinx-coroutines-core/src/test/kotlin/guide/example-channel-09.kt)
 
 The "ping" coroutine is started first, so it is the first one to receive the ball. Even though "ping"
 coroutine immediately starts receiving the ball again after sending it back to the table, the ball gets
@@ -1603,7 +1603,7 @@
 }
 ```
 
-> You can get full code [here](kotlinx-coroutines-core/src/test/kotlin/guide/example-sync-01.kt)
+> You can get full code [here](core/kotlinx-coroutines-core/src/test/kotlin/guide/example-sync-01.kt)
 
 <!--- TEST LINES_START
 Completed 1000000 actions in
@@ -1629,7 +1629,7 @@
 }
 ```
 
-> You can get full code [here](kotlinx-coroutines-core/src/test/kotlin/guide/example-sync-01b.kt)
+> You can get full code [here](core/kotlinx-coroutines-core/src/test/kotlin/guide/example-sync-01b.kt)
 
 <!--- TEST LINES_START
 Completed 1000000 actions in
@@ -1652,7 +1652,7 @@
 }
 ```
 
-> You can get full code [here](kotlinx-coroutines-core/src/test/kotlin/guide/example-sync-02.kt)
+> You can get full code [here](core/kotlinx-coroutines-core/src/test/kotlin/guide/example-sync-02.kt)
 
 <!--- TEST LINES_START
 Completed 1000000 actions in
@@ -1681,7 +1681,7 @@
 }
 ```
 
-> You can get full code [here](kotlinx-coroutines-core/src/test/kotlin/guide/example-sync-03.kt)
+> You can get full code [here](core/kotlinx-coroutines-core/src/test/kotlin/guide/example-sync-03.kt)
 
 <!--- TEST ARBITRARY_TIME
 Completed 1000000 actions in xxx ms
@@ -1713,7 +1713,7 @@
 }
 ```
 
-> You can get full code [here](kotlinx-coroutines-core/src/test/kotlin/guide/example-sync-04.kt)
+> You can get full code [here](core/kotlinx-coroutines-core/src/test/kotlin/guide/example-sync-04.kt)
 
 <!--- TEST ARBITRARY_TIME
 Completed 1000000 actions in xxx ms
@@ -1741,7 +1741,7 @@
 }
 ```
 
-> You can get full code [here](kotlinx-coroutines-core/src/test/kotlin/guide/example-sync-05.kt)
+> You can get full code [here](core/kotlinx-coroutines-core/src/test/kotlin/guide/example-sync-05.kt)
 
 <!--- TEST ARBITRARY_TIME
 Completed 1000000 actions in xxx ms
@@ -1771,7 +1771,7 @@
 }
 ```
 
-> You can get full code [here](kotlinx-coroutines-core/src/test/kotlin/guide/example-sync-06.kt)
+> You can get full code [here](core/kotlinx-coroutines-core/src/test/kotlin/guide/example-sync-06.kt)
 
 <!--- TEST ARBITRARY_TIME
 Completed 1000000 actions in xxx ms
@@ -1837,7 +1837,7 @@
 }
 ```
 
-> You can get full code [here](kotlinx-coroutines-core/src/test/kotlin/guide/example-sync-07.kt)
+> You can get full code [here](core/kotlinx-coroutines-core/src/test/kotlin/guide/example-sync-07.kt)
 
 <!--- TEST ARBITRARY_TIME
 Completed 1000000 actions in xxx ms
@@ -1922,7 +1922,7 @@
 }
 ```
 
-> You can get full code [here](kotlinx-coroutines-core/src/test/kotlin/guide/example-select-01.kt)
+> You can get full code [here](core/kotlinx-coroutines-core/src/test/kotlin/guide/example-select-01.kt)
 
 The result of this code is: 
 
@@ -1981,7 +1981,7 @@
 }
 ```
 
-> You can get full code [here](kotlinx-coroutines-core/src/test/kotlin/guide/example-select-02.kt)
+> You can get full code [here](core/kotlinx-coroutines-core/src/test/kotlin/guide/example-select-02.kt)
 
 The result of this code is quite interesting, so we'll analyze it in mode detail:
 
@@ -2044,7 +2044,7 @@
 }
 ``` 
  
-> You can get full code [here](kotlinx-coroutines-core/src/test/kotlin/guide/example-select-03.kt)
+> You can get full code [here](core/kotlinx-coroutines-core/src/test/kotlin/guide/example-select-03.kt)
   
 So let us see what happens:
  
@@ -2111,7 +2111,7 @@
 }
 ```
 
-> You can get full code [here](kotlinx-coroutines-core/src/test/kotlin/guide/example-select-04.kt)
+> You can get full code [here](core/kotlinx-coroutines-core/src/test/kotlin/guide/example-select-04.kt)
 
 The output is:
 
@@ -2183,7 +2183,7 @@
 }
 ```
 
-> You can get full code [here](kotlinx-coroutines-core/src/test/kotlin/guide/example-select-05.kt)
+> You can get full code [here](core/kotlinx-coroutines-core/src/test/kotlin/guide/example-select-05.kt)
 
 The result of this code:
 
@@ -2208,7 +2208,7 @@
 [launch]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental/launch.html
 [delay]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental/delay.html
 [runBlocking]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental/run-blocking.html
-[Job]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental/-job.html
+[Job]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental/-job/index.html
 [CancellationException]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental/-cancellation-exception.html
 [yield]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental/yield.html
 [CoroutineScope.isActive]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental/-coroutine-scope/is-active.html
@@ -2228,13 +2228,13 @@
 [newCoroutineContext]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental/new-coroutine-context.html
 [CoroutineName]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental/-coroutine-name/index.html
 [Job.cancel]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental/-job/cancel.html
-[CompletableDeferred]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental/-completable-deferred.html
+[CompletableDeferred]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental/-completable-deferred/index.html
 <!--- INDEX kotlinx.coroutines.experimental.sync -->
-[Mutex]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental.sync/-mutex.html
+[Mutex]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental.sync/-mutex/index.html
 [Mutex.lock]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental.sync/-mutex/lock.html
 [Mutex.unlock]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental.sync/-mutex/unlock.html
 <!--- INDEX kotlinx.coroutines.experimental.channels -->
-[Channel]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental.channels/-channel.html
+[Channel]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental.channels/-channel/index.html
 [SendChannel.send]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental.channels/-send-channel/send.html
 [ReceiveChannel.receive]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental.channels/-receive-channel/receive.html
 [SendChannel.close]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental.channels/-send-channel/close.html
diff --git a/integration/kotlinx-coroutines-guava/pom.xml b/integration/kotlinx-coroutines-guava/pom.xml
index 2cf69b2..3f117a5 100644
--- a/integration/kotlinx-coroutines-guava/pom.xml
+++ b/integration/kotlinx-coroutines-guava/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.jetbrains.kotlinx</groupId>
         <artifactId>kotlinx-coroutines</artifactId>
-        <version>0.17-SNAPSHOT</version>
+        <version>0.18-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
 
diff --git a/integration/kotlinx-coroutines-jdk8/pom.xml b/integration/kotlinx-coroutines-jdk8/pom.xml
index 5d0b573..c3287fc 100644
--- a/integration/kotlinx-coroutines-jdk8/pom.xml
+++ b/integration/kotlinx-coroutines-jdk8/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.jetbrains.kotlinx</groupId>
         <artifactId>kotlinx-coroutines</artifactId>
-        <version>0.17-SNAPSHOT</version>
+        <version>0.18-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
 
diff --git a/integration/kotlinx-coroutines-nio/pom.xml b/integration/kotlinx-coroutines-nio/pom.xml
index f107a22..94ac22d 100644
--- a/integration/kotlinx-coroutines-nio/pom.xml
+++ b/integration/kotlinx-coroutines-nio/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.jetbrains.kotlinx</groupId>
         <artifactId>kotlinx-coroutines</artifactId>
-        <version>0.17-SNAPSHOT</version>
+        <version>0.18-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
 
diff --git a/integration/kotlinx-coroutines-quasar/pom.xml b/integration/kotlinx-coroutines-quasar/pom.xml
index 4666ad0..93cd255 100644
--- a/integration/kotlinx-coroutines-quasar/pom.xml
+++ b/integration/kotlinx-coroutines-quasar/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.jetbrains.kotlinx</groupId>
         <artifactId>kotlinx-coroutines</artifactId>
-        <version>0.17-SNAPSHOT</version>
+        <version>0.18-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
 
diff --git a/knit/pom.xml b/knit/pom.xml
index 826070e..c510769 100644
--- a/knit/pom.xml
+++ b/knit/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.jetbrains.kotlinx</groupId>
         <artifactId>kotlinx-coroutines</artifactId>
-        <version>0.17-SNAPSHOT</version>
+        <version>0.18-SNAPSHOT</version>
     </parent>
 
     <artifactId>knit</artifactId>
diff --git a/knit/resources/knit.properties b/knit/resources/knit.properties
index 141143c..1b3f48a 100644
--- a/knit/resources/knit.properties
+++ b/knit/resources/knit.properties
@@ -16,6 +16,6 @@
 
 site.root=https://kotlin.github.io/kotlinx.coroutines
 
-module.roots=. integration reactive ui
+module.roots=core integration reactive ui
 module.marker=pom.xml
 module.docs=target/dokka
diff --git a/knit/src/Knit.kt b/knit/src/Knit.kt
index f4ab211..2ddabcc 100644
--- a/knit/src/Knit.kt
+++ b/knit/src/Knit.kt
@@ -441,8 +441,8 @@
             val refLink = result.groups[1]!!.value
             if (refLink.startsWith("..")) continue // ignore cross-references
             val refName = namePrefix + result.groups[2]!!.value
-            map.put(refName, path + "/" + refLink)
-            map.put(pkg + "." + refName, path + "/" + refLink)
+            map.putIfAbsent(refName, path + "/" + refLink)
+            map.putIfAbsent(pkg + "." + refName, path + "/" + refLink)
             if (refLink.endsWith(INDEX_HTML)) {
                 if (visited.add(refLink)) {
                     val path2 = path + "/" + refLink.substring(0, refLink.length - INDEX_HTML.length)
diff --git a/pom.xml b/pom.xml
index 737571a..c29c5e0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -23,7 +23,7 @@
 
     <groupId>org.jetbrains.kotlinx</groupId>
     <artifactId>kotlinx-coroutines</artifactId>
-    <version>0.17-SNAPSHOT</version>
+    <version>0.18-SNAPSHOT</version>
     <packaging>pom</packaging>
 
     <description>Coroutines support libraries for Kotlin 1.1</description>
@@ -41,10 +41,10 @@
 
     <properties>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-        <kotlin.version>1.1.4-2</kotlin.version>
-        <dokka.version>0.9.15-eap-1</dokka.version>
+        <kotlin.version>1.1.4</kotlin.version>
+        <dokka.version>0.9.15</dokka.version>
         <junit.version>4.12</junit.version>
-        <atomicfu.version>0.3</atomicfu.version>
+        <atomicfu.version>0.6</atomicfu.version>
         <maven.compiler.source>1.6</maven.compiler.source>
         <maven.compiler.target>1.6</maven.compiler.target>
         <core.docs.url>https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/</core.docs.url>
@@ -116,10 +116,10 @@
     </distributionManagement>
 
     <modules>
-        <module>kotlinx-coroutines-core</module>
         <module>benchmarks</module>
         <module>site</module>
         <module>knit</module>
+        <module>core/kotlinx-coroutines-core</module>
         <module>reactive/kotlinx-coroutines-reactive</module>
         <module>reactive/kotlinx-coroutines-reactor</module>
         <module>reactive/kotlinx-coroutines-rx1</module>
@@ -132,7 +132,6 @@
         <module>integration/kotlinx-coroutines-nio</module>
         <module>integration/kotlinx-coroutines-guava</module>
         <module>integration/kotlinx-coroutines-quasar</module>
-        <module>integration/kotlinx-coroutines-io</module>
     </modules>
 
     <dependencies>
@@ -389,4 +388,4 @@
             </repositories>
         </profile>
     </profiles>
-</project>
+</project>
\ No newline at end of file
diff --git a/reactive/coroutines-guide-reactive.md b/reactive/coroutines-guide-reactive.md
index 0729fb4..823be69 100644
--- a/reactive/coroutines-guide-reactive.md
+++ b/reactive/coroutines-guide-reactive.md
@@ -1054,14 +1054,14 @@
 [CommonPool]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental/-common-pool/index.html
 [Job.join]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental/-job/join.html
 <!--- INDEX kotlinx.coroutines.experimental.channels -->
-[Channel]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental.channels/-channel.html
+[Channel]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental.channels/-channel/index.html
 [ReceiveChannel.receive]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental.channels/-receive-channel/receive.html
 [produce]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental.channels/produce.html
 [consumeEach]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental.channels/consume-each.html
 [ReceiveChannel]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental.channels/-receive-channel/index.html
 [SubscriptionReceiveChannel.close]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental.channels/-subscription-receive-channel/close.html
 [SendChannel.send]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental.channels/-send-channel/send.html
-[BroadcastChannel]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental.channels/-broadcast-channel.html
+[BroadcastChannel]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental.channels/-broadcast-channel/index.html
 [ConflatedBroadcastChannel]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental.channels/-conflated-broadcast-channel/index.html
 [ArrayBroadcastChannel]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental.channels/-array-broadcast-channel/index.html
 <!--- INDEX kotlinx.coroutines.experimental.selects -->
diff --git a/reactive/kotlinx-coroutines-reactive/pom.xml b/reactive/kotlinx-coroutines-reactive/pom.xml
index df0f887..c6b56f9 100644
--- a/reactive/kotlinx-coroutines-reactive/pom.xml
+++ b/reactive/kotlinx-coroutines-reactive/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.jetbrains.kotlinx</groupId>
         <artifactId>kotlinx-coroutines</artifactId>
-        <version>0.17-SNAPSHOT</version>
+        <version>0.18-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
 
diff --git a/reactive/kotlinx-coroutines-reactive/src/main/kotlin/kotlinx/coroutines/experimental/reactive/Channel.kt b/reactive/kotlinx-coroutines-reactive/src/main/kotlin/kotlinx/coroutines/experimental/reactive/Channel.kt
index f2bbce3..40f88a5 100644
--- a/reactive/kotlinx-coroutines-reactive/src/main/kotlin/kotlinx/coroutines/experimental/reactive/Channel.kt
+++ b/reactive/kotlinx-coroutines-reactive/src/main/kotlin/kotlinx/coroutines/experimental/reactive/Channel.kt
@@ -58,13 +58,19 @@
 /**
  * Subscribes to this [Publisher] and performs the specified action for each received element.
  */
-// :todo: make it inline when this bug is fixed: https://youtrack.jetbrains.com/issue/KT-16448
-public suspend fun <T> Publisher<T>.consumeEach(action: suspend (T) -> Unit) {
+public inline suspend fun <T> Publisher<T>.consumeEach(action: (T) -> Unit) {
     openSubscription().use { channel ->
         for (x in channel) action(x)
     }
 }
 
+/**
+ * @suppress: **Deprecated**: binary compatibility with old code
+ */
+@Deprecated("binary compatibility with old code", level = DeprecationLevel.HIDDEN)
+public suspend fun <T> Publisher<T>.consumeEach(action: suspend (T) -> Unit) =
+    consumeEach { action(it) }
+
 private class SubscriptionChannel<T> : LinkedListChannel<T>(), SubscriptionReceiveChannel<T>, Subscriber<T> {
     @Volatile
     @JvmField
diff --git a/reactive/kotlinx-coroutines-reactive/src/main/kotlin/kotlinx/coroutines/experimental/reactive/Publish.kt b/reactive/kotlinx-coroutines-reactive/src/main/kotlin/kotlinx/coroutines/experimental/reactive/Publish.kt
index 11dc70e..224357c 100644
--- a/reactive/kotlinx-coroutines-reactive/src/main/kotlin/kotlinx/coroutines/experimental/reactive/Publish.kt
+++ b/reactive/kotlinx-coroutines-reactive/src/main/kotlin/kotlinx/coroutines/experimental/reactive/Publish.kt
@@ -24,6 +24,7 @@
 import kotlinx.coroutines.experimental.channels.SendChannel
 import kotlinx.coroutines.experimental.handleCoroutineException
 import kotlinx.coroutines.experimental.newCoroutineContext
+import kotlinx.coroutines.experimental.selects.SelectClause2
 import kotlinx.coroutines.experimental.selects.SelectInstance
 import kotlinx.coroutines.experimental.sync.Mutex
 import org.reactivestreams.Publisher
@@ -49,7 +50,7 @@
 public fun <T> publish(
     context: CoroutineContext,
     block: suspend ProducerScope<T>.() -> Unit
-): Publisher<T> = Publisher<T> { subscriber ->
+): Publisher<T> = Publisher { subscriber ->
     val newContext = newCoroutineContext(context)
     val coroutine = PublisherCoroutine(newContext, subscriber)
     coroutine.initParentJob(context[Job])
@@ -61,10 +62,10 @@
 private const val CLOSED = -1L    // closed, but have not signalled onCompleted/onError yet
 private const val SIGNALLED = -2L  // already signalled subscriber onCompleted/onError
 
-private class PublisherCoroutine<T>(
+private class PublisherCoroutine<in T>(
     parentContext: CoroutineContext,
     private val subscriber: Subscriber<T>
-) : AbstractCoroutine<Unit>(parentContext, true), ProducerScope<T>, Subscription {
+) : AbstractCoroutine<Unit>(parentContext, true), ProducerScope<T>, Subscription, SelectClause2<T, SendChannel<T>> {
     override val channel: SendChannel<T> get() = this
 
     // Mutex is locked when either nRequested == 0 or while subscriber.onXXX is being invoked
@@ -85,7 +86,7 @@
         return true
     }
 
-    public suspend override fun send(element: T): Unit {
+    public suspend override fun send(element: T) {
         // fast-path -- try send without suspension
         if (offer(element)) return
         // slow-path does suspend
@@ -97,11 +98,17 @@
         doLockedNext(element)
     }
 
-    override fun <R> registerSelectSend(select: SelectInstance<R>, element: T, block: suspend () -> R) =
-        mutex.registerSelectLock(select, null) {
+    override val onSend: SelectClause2<T, SendChannel<T>>
+        get() = this
+
+    // registerSelectSend
+    @Suppress("PARAMETER_NAME_CHANGED_ON_OVERRIDE")
+    override fun <R> registerSelectClause2(select: SelectInstance<R>, element: T, block: suspend (SendChannel<T>) -> R) {
+        mutex.onLock.registerSelectClause2(select, null) {
             doLockedNext(element)
-            block()
+            block(this)
         }
+    }
 
     // assert: mutex.isLocked()
     private fun doLockedNext(elem: T) {
diff --git a/reactive/kotlinx-coroutines-reactor/pom.xml b/reactive/kotlinx-coroutines-reactor/pom.xml
index ba565fa..cf5a396 100644
--- a/reactive/kotlinx-coroutines-reactor/pom.xml
+++ b/reactive/kotlinx-coroutines-reactor/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.jetbrains.kotlinx</groupId>
         <artifactId>kotlinx-coroutines</artifactId>
-        <version>0.17-SNAPSHOT</version>
+        <version>0.18-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
 
diff --git a/reactive/kotlinx-coroutines-rx-example/pom.xml b/reactive/kotlinx-coroutines-rx-example/pom.xml
index 9f8bbe5..eb7eb03 100644
--- a/reactive/kotlinx-coroutines-rx-example/pom.xml
+++ b/reactive/kotlinx-coroutines-rx-example/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.jetbrains.kotlinx</groupId>
         <artifactId>kotlinx-coroutines</artifactId>
-        <version>0.17-SNAPSHOT</version>
+        <version>0.18-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
 
diff --git a/reactive/kotlinx-coroutines-rx1/pom.xml b/reactive/kotlinx-coroutines-rx1/pom.xml
index 7d54ddb..cd6f72c 100644
--- a/reactive/kotlinx-coroutines-rx1/pom.xml
+++ b/reactive/kotlinx-coroutines-rx1/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.jetbrains.kotlinx</groupId>
         <artifactId>kotlinx-coroutines</artifactId>
-        <version>0.17-SNAPSHOT</version>
+        <version>0.18-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
 
diff --git a/reactive/kotlinx-coroutines-rx1/src/main/kotlin/kotlinx/coroutines/experimental/rx1/RxChannel.kt b/reactive/kotlinx-coroutines-rx1/src/main/kotlin/kotlinx/coroutines/experimental/rx1/RxChannel.kt
index 410247a..f911351 100644
--- a/reactive/kotlinx-coroutines-rx1/src/main/kotlin/kotlinx/coroutines/experimental/rx1/RxChannel.kt
+++ b/reactive/kotlinx-coroutines-rx1/src/main/kotlin/kotlinx/coroutines/experimental/rx1/RxChannel.kt
@@ -59,13 +59,19 @@
 /**
  * Subscribes to this [Observable] and performs the specified action for each received element.
  */
-// :todo: make it inline when this bug is fixed: https://youtrack.jetbrains.com/issue/KT-16448
-public suspend fun <T> Observable<T>.consumeEach(action: suspend (T) -> Unit) {
+public inline suspend fun <T> Observable<T>.consumeEach(action: (T) -> Unit) {
     openSubscription().use { channel ->
         for (x in channel) action(x)
     }
 }
 
+/**
+ * @suppress: **Deprecated**: binary compatibility with old code
+ */
+@Deprecated("binary compatibility with old code", level = DeprecationLevel.HIDDEN)
+public suspend fun <T> Observable<T>.consumeEach(action: suspend (T) -> Unit) =
+    consumeEach { action(it) }
+
 private class SubscriptionChannel<T> : LinkedListChannel<T>(), SubscriptionReceiveChannel<T> {
     @JvmField
     val subscriber: ChannelSubscriber = ChannelSubscriber()
diff --git a/reactive/kotlinx-coroutines-rx1/src/main/kotlin/kotlinx/coroutines/experimental/rx1/RxObservable.kt b/reactive/kotlinx-coroutines-rx1/src/main/kotlin/kotlinx/coroutines/experimental/rx1/RxObservable.kt
index f7c4b5e..5688d2d 100644
--- a/reactive/kotlinx-coroutines-rx1/src/main/kotlin/kotlinx/coroutines/experimental/rx1/RxObservable.kt
+++ b/reactive/kotlinx-coroutines-rx1/src/main/kotlin/kotlinx/coroutines/experimental/rx1/RxObservable.kt
@@ -24,6 +24,7 @@
 import kotlinx.coroutines.experimental.channels.SendChannel
 import kotlinx.coroutines.experimental.handleCoroutineException
 import kotlinx.coroutines.experimental.newCoroutineContext
+import kotlinx.coroutines.experimental.selects.SelectClause2
 import kotlinx.coroutines.experimental.selects.SelectInstance
 import kotlinx.coroutines.experimental.sync.Mutex
 import rx.Observable
@@ -63,10 +64,10 @@
 private const val CLOSED = -1L    // closed, but have not signalled onCompleted/onError yet
 private const val SIGNALLED = -2L  // already signalled subscriber onCompleted/onError
 
-private class RxObservableCoroutine<T>(
+private class RxObservableCoroutine<in T>(
     parentContext: CoroutineContext,
     private val subscriber: Subscriber<T>
-) : AbstractCoroutine<Unit>(parentContext, true), ProducerScope<T>, Producer, Subscription {
+) : AbstractCoroutine<Unit>(parentContext, true), ProducerScope<T>, Producer, Subscription, SelectClause2<T, SendChannel<T>> {
     override val channel: SendChannel<T> get() = this
 
     // Mutex is locked when either nRequested == 0 or while subscriber.onXXX is being invoked
@@ -87,7 +88,7 @@
         return true
     }
 
-    public suspend override fun send(element: T): Unit {
+    public suspend override fun send(element: T) {
         // fast-path -- try send without suspension
         if (offer(element)) return
         // slow-path does suspend
@@ -99,11 +100,17 @@
         doLockedNext(element)
     }
 
-    override fun <R> registerSelectSend(select: SelectInstance<R>, element: T, block: suspend () -> R) =
-        mutex.registerSelectLock(select, null) {
+    override val onSend: SelectClause2<T, SendChannel<T>>
+        get() = this
+
+    // registerSelectSend
+    @Suppress("PARAMETER_NAME_CHANGED_ON_OVERRIDE")
+    override fun <R> registerSelectClause2(select: SelectInstance<R>, element: T, block: suspend (SendChannel<T>) -> R) {
+        mutex.onLock.registerSelectClause2(select, null) {
             doLockedNext(element)
-            block()
+            block(this)
         }
+    }
 
     // assert: mutex.isLocked()
     private fun doLockedNext(elem: T) {
diff --git a/reactive/kotlinx-coroutines-rx2/pom.xml b/reactive/kotlinx-coroutines-rx2/pom.xml
index 57b7b78..05ccd85 100644
--- a/reactive/kotlinx-coroutines-rx2/pom.xml
+++ b/reactive/kotlinx-coroutines-rx2/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.jetbrains.kotlinx</groupId>
         <artifactId>kotlinx-coroutines</artifactId>
-        <version>0.17-SNAPSHOT</version>
+        <version>0.18-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
 
diff --git a/reactive/kotlinx-coroutines-rx2/src/main/kotlin/kotlinx/coroutines/experimental/rx2/RxChannel.kt b/reactive/kotlinx-coroutines-rx2/src/main/kotlin/kotlinx/coroutines/experimental/rx2/RxChannel.kt
index c98ae0d..165d330 100644
--- a/reactive/kotlinx-coroutines-rx2/src/main/kotlin/kotlinx/coroutines/experimental/rx2/RxChannel.kt
+++ b/reactive/kotlinx-coroutines-rx2/src/main/kotlin/kotlinx/coroutines/experimental/rx2/RxChannel.kt
@@ -71,8 +71,7 @@
 /**
  * Subscribes to this [MaybeSource] and performs the specified action for each received element.
  */
-// :todo: make it inline when this bug is fixed: https://youtrack.jetbrains.com/issue/KT-16448
-public suspend fun <T> MaybeSource<T>.consumeEach(action: suspend (T) -> Unit) {
+public inline suspend fun <T> MaybeSource<T>.consumeEach(action: (T) -> Unit) {
     openSubscription().use { channel ->
         for (x in channel) action(x)
     }
@@ -81,13 +80,19 @@
 /**
  * Subscribes to this [ObservableSource] and performs the specified action for each received element.
  */
-// :todo: make it inline when this bug is fixed: https://youtrack.jetbrains.com/issue/KT-16448
-public suspend fun <T> ObservableSource<T>.consumeEach(action: suspend (T) -> Unit) {
+public inline suspend fun <T> ObservableSource<T>.consumeEach(action: (T) -> Unit) {
     openSubscription().use { channel ->
         for (x in channel) action(x)
     }
 }
 
+/**
+ * @suppress: **Deprecated**: binary compatibility with old code
+ */
+@Deprecated("binary compatibility with old code", level = DeprecationLevel.HIDDEN)
+public suspend fun <T> ObservableSource<T>.consumeEach(action: suspend (T) -> Unit) =
+    consumeEach { action(it) }
+
 private class SubscriptionChannel<T> : LinkedListChannel<T>(), SubscriptionReceiveChannel<T>, Observer<T>, MaybeObserver<T> {
     @Volatile
     var subscription: Disposable? = null
diff --git a/reactive/kotlinx-coroutines-rx2/src/main/kotlin/kotlinx/coroutines/experimental/rx2/RxObservable.kt b/reactive/kotlinx-coroutines-rx2/src/main/kotlin/kotlinx/coroutines/experimental/rx2/RxObservable.kt
index 5409e44..2e81e23 100644
--- a/reactive/kotlinx-coroutines-rx2/src/main/kotlin/kotlinx/coroutines/experimental/rx2/RxObservable.kt
+++ b/reactive/kotlinx-coroutines-rx2/src/main/kotlin/kotlinx/coroutines/experimental/rx2/RxObservable.kt
@@ -27,6 +27,7 @@
 import kotlinx.coroutines.experimental.channels.SendChannel
 import kotlinx.coroutines.experimental.handleCoroutineException
 import kotlinx.coroutines.experimental.newCoroutineContext
+import kotlinx.coroutines.experimental.selects.SelectClause2
 import kotlinx.coroutines.experimental.selects.SelectInstance
 import kotlinx.coroutines.experimental.sync.Mutex
 import kotlin.coroutines.experimental.CoroutineContext
@@ -65,7 +66,7 @@
 private class RxObservableCoroutine<T>(
     parentContext: CoroutineContext,
     private val subscriber: ObservableEmitter<T>
-) : AbstractCoroutine<Unit>(parentContext, true), ProducerScope<T>, Cancellable {
+) : AbstractCoroutine<Unit>(parentContext, true), ProducerScope<T>, Cancellable, SelectClause2<T, SendChannel<T>> {
     override val channel: SendChannel<T> get() = this
 
     // Mutex is locked when while subscriber.onXXX is being invoked
@@ -98,11 +99,17 @@
         doLockedNext(element)
     }
 
-    override fun <R> registerSelectSend(select: SelectInstance<R>, element: T, block: suspend () -> R) =
-        mutex.registerSelectLock(select, null) {
+    override val onSend: SelectClause2<T, SendChannel<T>>
+        get() = this
+
+    // registerSelectSend
+    @Suppress("PARAMETER_NAME_CHANGED_ON_OVERRIDE")
+    override fun <R> registerSelectClause2(select: SelectInstance<R>, element: T, block: suspend (SendChannel<T>) -> R) {
+        mutex.onLock.registerSelectClause2(select, null) {
             doLockedNext(element)
-            block()
+            block(this)
         }
+    }
 
     // assert: mutex.isLocked()
     private fun doLockedNext(elem: T) {
diff --git a/site/build.xml b/site/build.xml
index e67458c..a738724 100644
--- a/site/build.xml
+++ b/site/build.xml
@@ -33,7 +33,7 @@
     <target name="site" depends="knit">
         <copy todir="target">
             <fileset dir="docs"/>
-            <fileset dir="../kotlinx-coroutines-core/target/dokka" includes="**/*.md"/>
+            <fileset dir="../core/kotlinx-coroutines-core/target/dokka" includes="**/*.md"/>
             <fileset dir="../reactive/kotlinx-coroutines-reactive/target/dokka" includes="**/*.md"/>
             <fileset dir="../reactive/kotlinx-coroutines-reactor/target/dokka" includes="**/*.md"/>
             <fileset dir="../reactive/kotlinx-coroutines-rx1/target/dokka" includes="**/*.md"/>
diff --git a/site/pom.xml b/site/pom.xml
index 4ce3e16..3ebcd0c 100644
--- a/site/pom.xml
+++ b/site/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.jetbrains.kotlinx</groupId>
         <artifactId>kotlinx-coroutines</artifactId>
-        <version>0.17-SNAPSHOT</version>
+        <version>0.18-SNAPSHOT</version>
     </parent>
 
     <artifactId>kotlinx-coroutines-site</artifactId>
diff --git a/ui/coroutines-guide-ui.md b/ui/coroutines-guide-ui.md
index d35d4e2..91f3262 100644
--- a/ui/coroutines-guide-ui.md
+++ b/ui/coroutines-guide-ui.md
@@ -173,7 +173,7 @@
 `app/build.gradle` file:
 
 ```groovy
-compile "org.jetbrains.kotlinx:kotlinx-coroutines-android:0.17"
+compile "org.jetbrains.kotlinx:kotlinx-coroutines-android:0.18"
 ```
 
 Coroutines are experimental feature in Kotlin.
@@ -698,7 +698,7 @@
 <!--- INDEX kotlinx.coroutines.experimental -->
 [launch]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental/launch.html
 [delay]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental/delay.html
-[Job]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental/-job.html
+[Job]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental/-job/index.html
 [Job.cancel]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental/-job/cancel.html
 [run]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental/run.html
 [CommonPool]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental/-common-pool/index.html
@@ -711,7 +711,7 @@
 [SendChannel.offer]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental.channels/-send-channel/offer.html
 [SendChannel]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental.channels/-send-channel/index.html
 [RendezvousChannel]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental.channels/-rendezvous-channel/index.html
-[Channel]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental.channels/-channel.html
+[Channel]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental.channels/-channel/index.html
 [ConflatedChannel]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental.channels/-conflated-channel/index.html
 [Channel.CONFLATED]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental.channels/-channel/-c-o-n-f-l-a-t-e-d.html
 [LinkedListChannel]: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental.channels/-linked-list-channel/index.html
diff --git a/ui/kotlinx-coroutines-android/example-app/app/build.gradle b/ui/kotlinx-coroutines-android/example-app/app/build.gradle
index f5100af..b6bad79 100644
--- a/ui/kotlinx-coroutines-android/example-app/app/build.gradle
+++ b/ui/kotlinx-coroutines-android/example-app/app/build.gradle
@@ -36,7 +36,7 @@
     compile 'com.android.support:design:25.2.0'
     testCompile 'junit:junit:4.12'
     compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
-    compile "org.jetbrains.kotlinx:kotlinx-coroutines-android:0.17"
+    compile "org.jetbrains.kotlinx:kotlinx-coroutines-android:0.18"
 }
 
 kotlin {
diff --git a/ui/kotlinx-coroutines-android/example-app/build.gradle b/ui/kotlinx-coroutines-android/example-app/build.gradle
index 620e87f..0f912b2 100644
--- a/ui/kotlinx-coroutines-android/example-app/build.gradle
+++ b/ui/kotlinx-coroutines-android/example-app/build.gradle
@@ -1,7 +1,7 @@
 // Top-level build file where you can add configuration options common to all sub-projects/modules.
 
 buildscript {
-    ext.kotlin_version = '1.1.3-2'
+    ext.kotlin_version = '1.1.4'
     repositories {
         jcenter()
     }
diff --git a/ui/kotlinx-coroutines-android/pom.xml b/ui/kotlinx-coroutines-android/pom.xml
index df61b44..e79e37a 100644
--- a/ui/kotlinx-coroutines-android/pom.xml
+++ b/ui/kotlinx-coroutines-android/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.jetbrains.kotlinx</groupId>
         <artifactId>kotlinx-coroutines</artifactId>
-        <version>0.17-SNAPSHOT</version>
+        <version>0.18-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
 
diff --git a/ui/kotlinx-coroutines-javafx/pom.xml b/ui/kotlinx-coroutines-javafx/pom.xml
index 833f142..9210e10 100644
--- a/ui/kotlinx-coroutines-javafx/pom.xml
+++ b/ui/kotlinx-coroutines-javafx/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.jetbrains.kotlinx</groupId>
         <artifactId>kotlinx-coroutines</artifactId>
-        <version>0.17-SNAPSHOT</version>
+        <version>0.18-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
 
diff --git a/ui/kotlinx-coroutines-swing/pom.xml b/ui/kotlinx-coroutines-swing/pom.xml
index 1480b8a..82edd53 100644
--- a/ui/kotlinx-coroutines-swing/pom.xml
+++ b/ui/kotlinx-coroutines-swing/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.jetbrains.kotlinx</groupId>
         <artifactId>kotlinx-coroutines</artifactId>
-        <version>0.17-SNAPSHOT</version>
+        <version>0.18-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
 
