This document discusses implementing a transaction manager in a rich internet application (RIA) to allow undoing and redoing of actions. It describes the history of client-server and web applications. It then explains how RIAs are more sophisticated and may require plugins but allow for easy client-side execution. The document outlines some RIA frameworks and then describes how a transaction manager could track complex interactions in a RIA by backing up actions in case of a mistake. It provides details on creating a simple sample application to demonstrate the transaction manager including using design patterns like singleton and command patterns. The transaction manager class is shown which manages undo and redo stacks and dispatches events. The document concludes with discussing advanced features and taking questions.