code: function(obj_binding_setter) {
  		return function(elements) {
  			var vals,
  				args = slice.call(arguments, 1);
  			if(args.length === 0) { // need at least one argument
  				return;
  			} else if(args.length === 1) { // an object with keys and values was passed in
  				vals = args[0];
  			} else if(args.length > 1) { // the first argument was the key, the second was a value
  				vals = {};
  				vals[args[0]] = args[1];
  			}
  
  			var binding = new Binding({
  				targets: elements,
  				setter: function(element, value) {
  					each(value, function(v, k) {
  						obj_binding_setter(element, k, v);
  					});
  				},
  				getter: function() {
  					if(is_map(vals)) {
  						return vals.toObject();
  					} else {
  						var rv = {};
  						each(vals, function(v, k) {
  							rv[k] = cjs.get(v);
  						});
  						return rv;
  					}
  				}
  			});
  
  			return binding;
  		};
  	}
docs: Creates a type of binding that accepts any number of arguments and then sets an attribute's value to depend on every element that was passed in