Introduction to Model-View-Presenter (MVP) pattern