explained MVC model in comments