added a generic MVC structure