use MVC pattern, introduce renderer as controller