Asynchronous data streams are all around modern applications: incoming events and notifications, continuous state and data updates, etc. Working with them is a complex challenge that we face. Kotlin Flow is a declarative mechanism for working with asynchronous data streams that builds on top of Kotlin coroutines and structured concurrency. We will see how the design of Kotlin Flow provides full-featured reactive streams in such a simple way that was never possible before on JVM. Writing operators and data transformations seizes to be a black art but becomes straightforward. We will peek behind the scenes and into some of the implementation details and see how they enable writing safe, reliable, and leak-free systems.