code: function() {
  		
  		var self = this;
  		
  		// in case the selfDestruction option has been changed by a method call
  		if (self.__options.selfDestruction) {
  			
  			// the GC task
  			self.__garbageCollector = setInterval(function() {
  				
  				var now = new Date().getTime();
  				
  				// forget the old events
  				self.__touchEvents = $.grep(self.__touchEvents, function(event, i) {
  					// 1 minute
  					return now - event.time > 60000;
  				});
  				
  				// auto-destruct if the origin is gone
  				if (!bodyContains(self._$origin)) {
  					
  					self.close(function(){
  						self.destroy();
  					});
  				}
  			}, 20000);
  		}
  		else {
  			clearInterval(self.__garbageCollector);
  		}
  		
  		return self;
  	}
docs: Schedules or cancels the garbage collector task
  
  @returns {self}
  @private