It's a design pattern and what it does is it separates the GlU and the Interface from the model or the what your program's actually doing in the background and what that does is it frees you up when your doing your designs if you need to change the GUI or if y you're moving it to other platforms as I'll speak later in the thing it allows you not to touch your main program you can keep that separate and visa versa if your GUI is working the way it needs to and you need to make changes in the background as to how your program is actually doing something but not impacting the GUI you can just change that piece and then you're not testing the GUI all over again. 