A game is broken into different screens. These screens could, for example, be a menu screen, an options screen and a game screen. A screen can be [Update]d and [Draw]n. It could also be possible to save and load a screen. When updating a screen, the screen produces the screen that is desired in the next frame. This could by done by the screen by updating and then returning itself, or producing and returning an entirely new screen, e.g. when starting a new game from the menu, the menu screen will return the new game screen. When drawing a screen, the screen draws itself unto the screen, using a given spritebatch, that must have been started prior to the drawing request. Afterwards, the spritebatch should be closed. A screen is a complex module that will probably contain it's own set of model, view and control classes. It might thus be a good idea to make a separate project for a screen. By doing this, the inner modules can be set to package visibility, and the few classes that will actually be produced and used from the outside, e.g. the screen class and a screenfactory, can be made public.