MVVM done right. Added an extra module for testing purposes.