The time is here to start thinking about the architecture of your Android app. You know your app will be all Kotlin (right?) it needs to do network requests, and it must communicate with a Bluetooth device. That means that it must deal with asynchronous programming so that it can receive and send data from the network and the device, while your UI keeps running as smooth as butter. There are a few choices to accomplish this, such as using plain Threads, AsyncTasks, or the popular Rx Java framework if you dread to manage threads in your own code (who doesn't). In this talk, we'll narrow down the choices to two candidates. The first one is the popular Rx Java framework and the second one is the newly minted Coroutines feature in Kotlin. We explain how they work and give you a checklist so that you can figure out which one suits the architecture of your app and your team of developers best. After all, you and your team want an app that is a pleasure to build and that your users will love!