introduce ViewPresenter