Huge change in structure.

Is now more MVVM-like