Forgot to export some interfaces.
Best practices and principles (in comments) updated for ViewModel.
Rewrote the minimal view utils we have (those are in flux, they'll keep changing).