Refactored gui to use View-Presenter-ViewModel pattern