Controller - View approach

Closes #2 
Closes #10
yes, there are a few implementation details that I want to leave for other branches - I have refactored this one enough :)