simple MVVC framework