Processing collections of data is a very common requirement when developing software. Fortunately, the Microsoft .NET Framework 3.0 gave us LINQ and this improved manipulating such collections, even to the point of making it easy in many cases. With the .NET Framework 4 and 4.5, asynchronous programming was the focus -- especially given the new async pattern in 4.5. Unfortunately, the combination of both collections and asynchronous programming is still filled with significant complexity. It's this problem domain that the Reactive Extensions (Rx) library is designed to address.