docs: function(tick) {
  		var spirits;
  		switch (tick.type) {
  			case gui.$TICK_INSIDE:
  				gui.Guide.$goasync(this._spirits.incoming);
  				this._spirits.incoming = [];
  				break;
  			case gui.$TICK_OUTSIDE:
  				spirits = gui.Object.each(this._spirits.outside, function(key, spirit) {
  					return spirit;
  				});
  				/*
  				 * TODO: make sure that this happens onexit (but not here)
  				spirits.forEach ( function ( spirit ) {
  					gui.Spirit.$exit ( spirit );
  				});
  				*/
  				spirits.forEach(function(spirit) {
  					gui.Spirit.$destruct(spirit);
  				});
  				spirits.forEach(function(spirit) {
  					gui.Spirit.$dispose(spirit);
  				});
  				this._spirits.outside = Object.create(null);
  				break;
  		}
  	}