closes #1, closes #15, closes #16, closes#17; aplique MVC