Controller - View approach

Closes #2 
Closes #10 
Closes #7