a simple mvvm library