Before taking a closer look at the practical applications of coroutines, it may be beneficial to understand more about the foundations of coroutines as a concept. This section will explore the history of coroutines and look at how and why they have been added to Kotlin. Additionally, we'll learn about what problems coroutines solve and why they are a beneficial tool to take advantage of.