Introducing the model-view-controller pattern