I am not 100% sure of the role of the Presenter vs the Model in the MVP pattern. From what I understand the Presenter holds references to both Models and Views, observes them, and communicates changes in the Model to the View and vice versa.
But is that 'all' the Presenter does? For example, should validation code for user input be in the Presenter?
And then there is the issue of dialogs. Should these have their own Presenter or should they be using the Presenter of their underlying window?