Model View controller is a set of patterns, and has been implemented in many ways. The main idea behind a MVC is you seperate your view (Screens) from the model (Business Objects) through a center controller. Other patterns can be used here to further abstract the connections, but to keep things simple a good way to accomplish this is to first understand that your screens should know nothing of the business objects. A central controller class is usually constructed to support the "awareness" of the eventing on the view (screens). The controller then wires up to the business objects to do the work. Eventing, Interfaces and sometimes other design patterns are used for this "wiring" of abstraction between the view of the model. For instance, I've just completed a project in which that I implemented a MVC. I added an additional layer of abstraction using a Command pattern. This pattern, when implemented on the Controller and the View, gives a very abstract way of defining actions. Within the view, I constructed CommandAdapters that adapted each of my commands to the controller. The controller also used the commands for communication back to the view. There is alot of debate in the industry on the best ways to create n-tier applications. I've learned that if an application is going through alot of changes, and new enhancements are readily being introduced. Then it is worth the extra time architecting a sound MVC approach. However, if the project is simple, doesn't change much, or there isn't enough funding available. Then using agile development techniques is the better bet. Hope this helps! ~ CodeDoctor ~