implemented MVC