applied MVC pattern