MVC from scratch