separated view and presenter