an opinionated view, somewhat like Backbone's, but with components