main
shared_ptr<SharedData> m = make_shared<SharedData>();
shared_ptr<SharedDataVM> vm = make_shared<SharedDataVM>(m)
unique_ptr<EditorWidget> iv = make_unique<EditorWidget>(vm); unique_ptr<DisplayWidget> ov1 = make_unique<DisplayWidget>(vm);
unique_ptr<DisplayWidget> ov2 = make_unique<DisplayWidget>(vm);
// Flow
input -> iv -> press iv's button -> vm.submitText
-> m.setData -> m.notifyObserver -> vm.notifyObserver -> views update