basic MVC pattern