The Model class defines the data model in the model-view-presenter paradigm. The Model is a singular object used across all presenters. The currently active presenter will have a pointer to the Model through deriving from ModelListener. The Model will typically contain UI state information that must be kept alive through screen transitions. It also usually provides the interface to the rest of the system (the backend). As such, the Model can receive events and data from the backend and inform the current presenter of such events through the modelListener pointer, which is automatically configured to point to the current presenter. Conversely, the current presenter can trigger events in the backend through the Model.