This guide provides everything you need to get started with Prism and to use it to create flexible, maintainable Windows® Presentation Foundation (WPF) and Microsoft Silverlight® 4.0 applications. It can be challenging to design and build WPF or Silverlight client applications that are flexible, maintainable, and that can evolve over time based on changing requirements. These kinds of applications require a loosely coupled modular architecture that allows individual parts of the application to be independently developed and tested, allowing the application to be modified or extended later on. Additionally, the architecture should promote testability, code re-use, and flexibility. Prism helps you to design and build flexible and maintainable WPF and Silverlight applications by using design patterns that support important architectural design principles, such as separation of concerns and loose coupling. This guide helps you understand these design patterns and describes how you can use Prism to implement them in your WPF or Silverlight applications. This guide will show you how to use Prism to implement the Model-View-View-Model (MVVM) pattern in your application, and how to use it along with commands and interaction requests to encapsulate application logic and make it testable. It will show you how to split an application into separate functional modules that can communicate through loosely coupled events, and how to integrate those modules into the overall application. It will show you how to dynamically construct a flexible user interface by using regions, and how to implement rich navigation across a modular application. Prism allows you to use these design patterns together or in isolation, depending on your particular application requirements.