proper MVC separation