As smartphones get more powerful with bigger screens, the complexity of tasks that people want to be able to do with them follows the same growth. Fragments are making a comeback, combined with LiveData and ViewModels. As you adopt these architecture components into your apps, how can you build support for complex use cases with multiple fragments on screen? Should each fragment have a ViewModel? What about custom views? ViewModel Contracts propose the idea of having fragments (and potentially custom views) declare a ViewModel and LiveData via interface to abstract out all of the communication details between nested fragments and their parents. In this talk, Marcos Paulo Damesceno and Bret Erickson explain how to implement them, how architecture components deal with ViewModels, what ViewModelFactories are, and how you can reuse them.