code: function(name, object, methods){
  	var isType = (object != Object),
  		prototype = object.prototype;
  
  	if (isType) object = new Type(name, object);
  
  	for (var i = 0, l = methods.length; i < l; i++){
  		var key = methods[i],
  			generic = object[key],
  			proto = prototype[key];
  
  		if (generic) generic.protect();
  
  		if (isType && proto){
  			delete prototype[key];
  			prototype[key] = proto.protect();
  		}
  	}
  
  	if (isType) object.implement(prototype);
  
  	return force;
  }
docs: Default Types