much simpler implementation
View can take bound properties