MVC approach (intermediate commit)