code: function ViewModel(view, data, key, opts) {
  	var vm = this;
  
  	vm.view = view;
  	vm.data = data;
  	vm.key = key;
  
  	if (opts) {
  		vm.opts = opts;
  		vm.cfg(opts);
  	}
  
  	var out = isPlainObj(view) ? view : view.call(vm, vm, data, key, opts);
  
  	if (isFunc(out))
  		{ vm.render = out; }
  	else {
  		vm.render = out.render;
  		vm.cfg(out);
  	}
  
  	vm.init && vm.init.call(vm, vm, vm.data, vm.key, opts);
  }
docs: view + key serve as the vm's unique identity