tries to use MVC seperation
merges MVC mode branch