implementing Presenter using State pattern
centralised error handling