add presenter pattern