Added ViewModel, added tests, added binding