implemented view presenter pattern