code: function(r /*, a[, b[, ...]] */) {
  
  		// Get the arguments as an array but ommit the initial item
  		Array.prototype.slice.call(arguments, 1).forEach(function(a) {
  			if (Array.isArray(r) && Array.isArray(a)) {
  				Array.prototype.push.apply(r, a);
  			}
  			else if (r && (r instanceof Object || typeof r === 'object') && a && (a instanceof Object || typeof a === 'object') && r !== a) {
  				for (var x in a) {
  					r[x] = hello.utils.extend(r[x], a[x]);
  				}
  			}
  			else {
  
  				if (Array.isArray(a)) {
  					// Clone it
  					a = a.slice(0);
  				}
  
  				r = a;
  			}
  		});
  
  		return r;
  	}
docs: Extend the first object with the properties and methods of the second