code: function(subject, obj) {
  			if (typeof (subject) == "function") {
  				var spritz = Spritzr._getSpritzrVarCreate(subject);
  
  				if (typeof (obj) == "function") {
  					for ( var key in obj.prototype) {
  						subject.prototype[key] = obj.prototype[key];
  					}
  				} else {
  					for ( var key in obj) {
  						subject.prototype[key] = obj[key];
  					}
  				}
  
  				spritz.traits.push(obj);
  			} else {
  				var spritz = Spritzr._getSpritzrVarCreate(subject);
  
  				var getPropsFrom, clazz;
  
  				if (typeof (obj) == "function") {
  					getPropsFrom = obj.prototype;
  					clazz = obj;
  				} else {
  					getPropsFrom = obj;
  					clazz = obj.constructor;
  				}
  
  				for ( var key in getPropsFrom) {
  					if (typeof spritz.removed[key] == "undefined") {
  						if ((typeof subject[key] !== "undefined")
  								&& subject.hasOwnProperty(key)) {
  							spritz.removed[key] = subject[key];
  						} else {
  							spritz.removed[key] = Spritzr._noPreviousMethod;
  						}
  					}
  					subject[key] = getPropsFrom[key];
  				}
  
  				if (typeof (obj) == "function") {
  					obj.call(subject); // Call the constructor with the subject
  					// as 'this'
  				}
  
  				spritz.talents.push(obj);
  				spritz.talentClasses.push(clazz);
  			}
  		}
docs: Spritzes (mixes in) an existing class or instance with the given
  object.<br />
  If subject is a class/function then obj will become a 'trait' and
  apply to the class.<br />
  If subject is an instance then obj becomes a talent and will only
  apply to this one instance.